본문 바로가기
반응형

챌린지46

[코딩 테스트 30일 챌린지] : 실패.. 알고리즘 30일 연속으로 풀기를 도전했으나 실패했다. 생각보다 손에 잘 안 잡히는 것 같다. 이 외 핑계를 대면 프로젝트 끝나고 동기들 프로젝트 완료가 안 되서 좀 봐주느라 할 시간이 없었다. 이제 개인 프로젝트가 다 끝나긴 했는데 로직 정리를 아직 못 끝냈고, 팀 프로젝트도 바로 시작해서 아직 어렵다. 그래도, 조만간 다시 시작해야 한다. 이제 곧 취업을 대비해야 하기 때문이다. 제일 어려운 알고리즘 꼭 다음 기회에 성공해 보겠다. 2022. 6. 27.
[코딩 테스트 30일 챌린지] : 14 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 프로그래머스 - 2단계 ( 소수 찾기 ) 입, 출력 예제 풀이 import math from itertools import permutations # 에라토스 테네스의 체 def numberCheck(num): if num == 0 or num == 1: # 0,1은 소수가 아님 return False else: for i in range(2, int(math.sqrt(num)) + 1): # 입력받은 숫자의 제곱값까지 반복 if num % i == 0: # 입력 받은 값이 2부터 시작해서 나눠 떨어지는지 체크 return False return True def solution(numbers): answer = [] for i in range(1,.. 2022. 6. 25.
[코딩 테스트 30일 챌린지] : 13 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 1부터 20까지 카드가 오름차순으로 있고 규칙에 맞게 순서대로 카드 위치를 바꾼다. 이때, 마지막 카드들의 배치는 어떻게 되나? 입, 출력 예제 입력 : 5 10 9 13 1 2 3 4 5 6 1 2 3 4 5 6 1 20 1 20 출력 : 1 1 2 3 4 10 9 8 7 13 12 11 5 6 14 15 16 17 18 19 20 풀이 a = list(range(21)) for _ in range(10): s, e = map(int, input().split()) for i in range((e-s+1)//2): a[s+i], a[e-i] = a[e-i], a[s+i] a.pop(0) for x in a: print(x, end=' ') 2022. 6. 24.
[코딩 테스트 30일 챌린지] : 12 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 문자와 숫자가 섞인 문자열 중 숫자를 추출하고 순서대로 자연수를 만들어 약수의 개수를 출력 입, 출력 예제 입력 : g0en2Ts8eSoft 출력 : 28 6 풀이 s = input() # 누적을 위한 전역변수 res = 0 for x in s: # isdecimal은 0부터 9까지만 찾아준다. # isdigit은 제곱까지 다 찾아준다. if x.isdecimal(): res = res*10+int(x) print(res) cnt = 0 for i in range(1, res+1): if res%i==0: cnt += 1 print(cnt) 2022. 6. 23.
[코딩 테스트 30일 챌린지] : 11 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 n개 문자열 데이터를 입력 받고 앞으로 읽으나 뒤로 읽으나 같은 회문 문자열이면 yes, 아니면 no 출력, 대소문자 구분x 입, 출력 예제 입력 : 5 level moon abcba soon gooG 출력 : #1 YES #2 NO #3 YES #4 NO #5 YE 풀이 n = int(input()) for i in range(n): s = input() # s를 대문자화 시켜준다. s = s.upper() ############ 풀어서 쓴 코드 이 코드로 이해하는 게 좋다. #################### #s열의 길이를 구해준다. size = len(s) # 처음과 끝, 짝지어 비교하면 되므로 나누기 2를 해준 수 만큼 비교해 준다. f.. 2022. 6. 22.
[코딩 테스트 30일 챌린지] : 10 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 OX 시험에서 연속적으로 맞추면 누적 가산점을 준다. 틀린 문제는 0점이다. 시험문제의 채점 결과가 주어졌을 때 총 점수를 계산하라. 입, 출력 예제 입력 : 10 1 0 1 1 1 0 0 1 1 0 출력 : 1 10 풀이 n = int(input()) a = list(map(int, input().split())) # 점수를 합해야 한다. sum = 0 # 가중치 cnt = 0 # 리스트 a에서 첫 번째 인덱스 값부터 끝까지 하나씩 뺴준다. for x in a: # x가 1이랑 같다면 == 점수가 1점일 때 if x == 1: # 연속으로 정답을 맞추면 1씩 증가된 값을 더해야 하기 때문에 cnt에 가중치를 준다. cnt += 1 # 가중치 값을.. 2022. 6. 21.
[코딩 테스트 30일 챌린지] : 09 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 주사위 3개를 던져 규칙에 따라 상금을 받는다. n명이 주사위 게임에 참여했을 때 가장 많은 상금을 받는 사람의 상금을 출력하라.(규칙은 문제 요약에 적지 않겠다.) 입, 출력 예제 입력 : 3 3 3 6 2 2 2 6 2 5 출력 : 12000 풀이 n = int(input()) res = 0 for i in range(n): tmp = input().split() # tmp를 오름차순 정렬해 준다. tmp.sort() # tmp가 지금 문자열로 받아졌기 떄문에 int 형으로 변환해서 받아준다. a, b, c = map(int, tmp) if a == b and b == c: # a, b, c 모두 같은 값이라 아무 값이랑 1000이랑 곱해준다... 2022. 6. 20.
[코딩 테스트 30일 챌린지] : 08 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 n개의 자연수가 입력되면 각 자연수를 뒤집는다. 뒤집은 자연수가 소수이면 출력한다. 뒤집었을 때 첫 자리가 0이면 무시한다. 뒤집는 함수, 소수 확인 함수를 만든다. 입, 출력 예제 입력: 1 5 32 55 62 3700 250 출력: 1 23 73 풀이 def reverse(x): # 초기화 하나 한다. res=0 # while 문으로 x가 0보다 클 때 항상 반복문을 돌려준다. while x>0: # x의 1의 자리 숫자가 t가 된다. t=x%10 res=res*10+t # x는 10으로 나눈 몫으로 바꿔진다. x=x//10 # res를 리턴한다. return res def isPrime(x): # x의 값이 1일 수 있다. if x==1: #.. 2022. 6. 19.
[코딩 테스트 30일 챌린지] : 07 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 소수 구하기(에라토스테네스의 채) 입, 출력 예제 입력 : 1 20 출력 : 1 8 풀이 n=int(input()) ch=[0]*(+1) cnt=0 for i in range(2, n+1): if ch[i]==0: cnt+=1 for j in range(i, n+1, i): ch[j]=1 print(cnt) 2022. 6. 18.
[코딩 테스트 30일 챌린지] : 06 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 n개 자연수의 합을 구하고, 그 합의 최대 자연수를 출력하자. 단, 각 자연수의 자릿수의 합을 구하는 함수를 꼭 작성한다. 입, 출력 예제 입력 : 3 125 15232 97 출력 : 97 풀이 n = int(input()) a = list(map(int, input().split())) def digit_sum(x): sum=0 for i in str(x): sum+=int(i) return sum max = -2147000000 for x in a: tot=digit_sum(x) if tot>max: max=tot res=x print(res) str() 함수는 받은 값을 다 쪼개서 문자열로 받는다. 123을 넣으면 1 2 3을 따로 값을 문자.. 2022. 6. 17.
[코딩 테스트 30일 챌린지] : 05 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 정n면체, 정m면체 주사위를 던져 나올 수 있는 눈의 합 중 가장 높은 확률의 값을 출력 여러개인 경우 오름차순 출력 입, 출력 예제 입력 : 4 6 출력: 5 6 7 풀이 n, m = map(int, input().split()) cnt = [0]*(n+m+3) max=-2147000000 for i in range(1, n+1): for j in range(1, m+1): cnt[i+j] += 1 for i in range(n+m+1): if cnt[i]>max: max=cnt[i] for i in range(n+m+1): if cnt[i]==max: print(i, end=' ') n과 m의 합의 값을 담아둘 리스트를 만들고 n과 m을 더하고.. 2022. 6. 16.
[코딩 테스트 30일 챌린지] : 04 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 n명의 학생의 평균(소수 첫짜리 반올림)을 구하고, 평균에 가장 가까운 학생은 몇 번째 학생인지 구하라. 입, 출력 예제 입력 : 10 45 73 66 87 92 67 75 79 75 80 출력 : 74 7 풀이 n = int(input()) a = list(map(float, input().split())) avg=round(sum(a)/n) min = 2147000000 for idx, x in enumerate(a): tmp=abs(x-avg) if tmpscore: score=x res=idx+1 print(avg, res) 위에는 전체적인 코드고 아래는 풀이다. 주석으로 각 코드의 설명을 달아두었다. # round()를 사용해서 소수 첫째.. 2022. 6. 15.
[코딩 테스트 30일 챌린지] : 03 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 1부터 100까지 적힌 카드 중 3개를 뽑을 수 있는 모든 경우를 기록해 뽑은 후 값을 더한다. 이 중 k번째로 큰 수를 출력하자. 입, 출력 예제 입력: 10 3 13 15 34 23 45 65 33 11 26 42 출력: 143 풀이 n, k = map(int, input().split()) a = list(map(int, input().split())) res = set() for i in range(n): for j in range(i+1, n): for m in range(j+1, n): res.add(a[i] + a[j] + a[m]) res = list(res) res.sort(reverse=True) print(res[k-1]) n,.. 2022. 6. 14.
[코딩 테스트 30일 챌린지] : 02 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 테스트 케이스가 주어지고 n개의 숫자로 이루어진 숫자열이 주어지면 이 중에 s ~ e까지의 수를 오름차순정렬하고 k번째 수를 출력한다. 입, 출력 예제 입력 : 2 6 2 5 3 5 2 7 3 8 9 15 3 10 3 4 15 8 16 6 6 17 3 10 11 18 7 14 7 15 출력: #1 7 #2 6 풀이 t = int(input()) for i in range(t): n, s, e, k = map(int, input().split()) a = list(map(int, input().split())) a = a[s-1:e] a.sort() print("#%d %d" %(i+1, a[k-1])) 전체 풀이는 위와 같다. 조금 더 자세히 설명.. 2022. 6. 13.
[코딩 테스트 30일 챌린지] : 01 코딩 테스트 30일 챌린지 푼 문제 수 : 1 문제 요약 n,k를 입력 받아 n의 약수 중 k번째 작은 수를 출력하라. 이 외 약수가 없다면 -1 출력 입, 출력 예제 입력: 6 3 출력: 3 풀이 n,k = map(int, input().split()) cnt = 0 for i in range(1, n+1): if n%i==0: cnt += 1 if cnt == k: print(i) break else: print(-1) n과 k를 int 형식으로 받는다. 입력 예제가 6 3으로 띄어쓰기로 구분되어 있기 때문에 split 공백을 통해 구분하여 각각 n과 k에 값을 넣어준다. k번째 약수를 체크하기 위해 cnt를 넣어 n의 약수의 수를 카운팅해준다. for문을 통해 1부터 6까지 반복되게 해준다. 원래는.. 2022. 6. 12.
[코딩 테스트 30일 챌린지] : 챌린지 설명과 시작 전 코딩 테스트 실력 상태 체크 목차 챌린지 기간 : 22.06.12(일) ~ 22.07.11(월) 1. 코딩 테스트 30일 챌린지란? 2. 왜 30일 챌린지인가? 3. 계기 4. 풀이 언어 5. 공부 매개체 6. 학습 방법 7. 시작 전 상태 체크 1. 코딩 테스트 30일 챌린지란? 연속적으로 30일 동안 꾸준하게 코딩 테스트 문제를 풀고, 풀이를 기록하는 챌린지이다. 2. 왜 30일 챌린지인가? 꾸준하게 알고리즘 문제를 풀기 위한 습관을 들일 겸, 내가 질리지 않고 꾸준히 '이제 곧 끝난다! 힘내자!'로 스스로를 다독이며 해낼 수 있을 것 같은 기간을 30일 정도로 예측하기 때문에 30일 챌린지로 정했다. 그 전에 자바스크립트 30일 챌린지에서 팁을 얻었다. 3. 계기 취업을 앞두고 프로젝트를 열심히 하고 있지만, CS 지식과 알고.. 2022. 6. 12.
[JavaScript 30일 챌린지] : 30일차 두더지 게임을 만드는 미니 프로젝트였다. 2022. 2. 26.
[JavaScript 30일 챌린지] : 29일차 let countdown; const timerDisplay = document.querySelector('.display__time-left'); const endTime = document.querySelector('.display__end-time'); const buttons = document.querySelectorAll('[data-time]'); function timer(seconds) { // clear any existing timers clearInterval(countdown); const now = Date.now(); const then = now + seconds * 1000; displayTimeLeft(seconds); displayEndTime(then); countdo.. 2022. 2. 25.
[JavaScript 30일 챌린지] : 28일차 저번에 진행했던 동영상 속도 관련 조절하는 것을 이번에는 수직바에 마우스로 속도를 조절하는 프로젝트를 만들었다. 2022. 2. 24.
[JavaScript 30일 챌린지] : 27일차 세로 스크롤이 아닌, 가로 스크롤을 통해 내용을 확인할 수 있는 프로젝트였다. 그냥 스크롤 뿐만 아니라 클릭후 드래그하는 방식으로도 페이지를 이동시킬 수 있었다. 2022. 2. 23.
[JavaScript 30일 챌린지] : 26일차 마우스를 올리면 dropdown 방식으로 메뉴가 펼쳐지는 프로젝트이다. 홈페이지를 돌아다니다 보면 많이 보이는 방식인데 메뉴에 따라 크기도 알아서 바뀌는 모습을 볼 수있다. 2022. 2. 22.
반응형