코딩테스트63 [파이썬] 짝수와 홀수 [CODING TEST #65] https://school.programmers.co.kr/learn/courses/30/lessons/12937 def solution(num): answer = '' answer += 'Odd' if num % 2 == 1 else 'Even' return answer 2022. 8. 27. [파이썬] x만큼 간격이 있는 n개의 숫자 [CODING TEST #64] https://school.programmers.co.kr/learn/courses/30/lessons/12954 def solution(x, n): answer = [] for i in range(n): answer.append(x*(i+1)) return answer 2022. 8. 27. [파이썬] 배달- Summer/Winter Coding(~2018) [CODING TEST #63] https://school.programmers.co.kr/learn/courses/30/lessons/12978 하나의 노드에서 다른 노드들로의 최단 거리를 구하는 문제이므로 다익스트라를 이용했다. 양방향이므로 거리 정보가 입력될 때 a -> b, b -> a로의 길이를 함께 기록했다. 그리고 최소 힙을 활용한 우선순위 큐를 이용하여 다익스트라를 구현했다. A와 B 사이에는 여러 도로가 존재할 수 있기 때문에 처음에는 A와 B 사이에 town 리스트 정보를 생성할 때 가장 짧은 도로 정보만 넣으려 했는데, 어차피 다익스트라는 해당 노드와 인접한 모든 노드를 확인한다. town[node]를 모두 확인하여 가장 짧은 도로 정보를 이용해 갱신되므로 굳이 긴 코드를 짤 필요가 없었다. 다익스트라 상당히 어렵다.. 2022. 8. 24. [파이썬] 두 개 뽑아서 더하기 - 월간 코드 챌린지 시즌1 [CODING TEST #62] https://school.programmers.co.kr/learn/courses/30/lessons/68644 from itertools import combinations def solution(numbers): answer = [] two_list = list(combinations(numbers,2)) for two in two_list: answer.append(two[0]+two[1]) answer = sorted(list(set(answer))) return answer 2022. 8. 23. [파이썬] 약수의 개수와 덧셈 - 월간 코드 챌린지 시즌2 [CODING TEST #61] https://school.programmers.co.kr/learn/courses/30/lessons/77884 def solution(left, right): answer = 0 for num in range(left, right+1): count = 0 for i in range(num): if num%(i+1)==0: count += 1 if count % 2 == 0: # 짝수 answer += num else: # 홀수 answer -= num return answer 2022. 8. 22. [파이썬] 나머지가 1이 되는 수 찾기 - 월간 코드 챌린지 시즌3 [CODING TEST #60] https://school.programmers.co.kr/learn/courses/30/lessons/87389 while문으로 하나하나 살펴도 100만회 이하이므로 모든 경우를 살피는 방법이 가능하다. def solution(n): answer = 0 number = 2 while True: if n % number == 1: return number number += 1 2022. 8. 22. [파이썬] 성격 유형 검사하기 - 2022 KAKAO TECH INTERNSHIP [CODING TEST #59] https://school.programmers.co.kr/learn/courses/30/lessons/118666 딕셔너리를 이용하여 풀었다. def solution(survey, choices): answer = '' check_dict = {'R' : 0, 'T' : 0, 'F' : 0, 'C' : 0, 'M' : 0, 'J' : 0, 'A' : 0, 'N' : 0 } for idx, question in enumerate(survey): if choices[idx] == 4: # center continue elif choices[idx] - 4 < 0: # left check_dict[question[0]] += abs(choices[idx] - 4) else: # right check_dict.. 2022. 8. 20. [파이썬] 점프와 순간 이동 - Summer/Winter Coding(~2018) [CODING TEST #58] https://school.programmers.co.kr/learn/courses/30/lessons/12980 동적계획법(DP)을 이용하여 풀 수 있다. 아래서부터 위로 채워가는 Bottom - Up 방식을 이용하면 런타임 에러가 난다. n만큼 반복문을 돌아야 하는데 n의 크기가 최대 10억이기 때문이다. 문제가 풀리긴 하니 작은 입력 크기에서 사용해야 함. # Bottom-Up def solution(n): dp = [0] * (n+1) dp[1] = 1 for i in range(2,n+1): if i%2 == 1: dp[i] = dp[i-1]+1 else: dp[i] = min(dp[i-1]+1,dp[int(i/2)]) return dp[n] Top - Down 방식을 이용하면 짝수마다 2로 나.. 2022. 8. 18. [파이썬] 2 x n 타일링 [CODING TEST #57] https://school.programmers.co.kr/learn/courses/30/lessons/12900 동적계획법(DP)으로 해결.. 가로 블럭을 사용하면 무조건 2 x 2를 채워야 한다. 그래서 가로 기준 i-1번째까지 채웠을 때는 세로 블럭을 추가하는 방법 뿐이고, i-2번째까지 채웠을 때는 가로 블럭 2개를 추가하는 방법 뿐이다. i-2번째에서 세로 블럭을 채우는 건 dp[i-1]과 겹치므로 제외한다. 따라서 dp[i] = dp[i-1] + dp[i-2]가 성립한다. def solution(n): dp = [0] * (n+1) dp[1] = 1 dp[2] = 2 for i in range(3,n+1): dp[i] = (dp[i-1] + dp[i-2]) % 1000000007 return .. 2022. 8. 17. 이전 1 2 3 4 ··· 7 다음 728x90