본문 바로가기

알고리즘 문제 풀이/Programmers24

[12회차] Programmers Level.3 여행경로 def solution(tickets): routes = {} for start, end in tickets: if start not in routes: routes[start] = [end] else: routes[start].append(end) routes[start] = sorted(routes[start],reverse=True) stack = ['ICN'] answer = [] while stack: top = stack[-1] if top not in routes or len(routes[top]) == 0: answer.append(stack.pop()) else: stack.append(routes[top].pop()) return answer.. 2021. 12. 16.
[11회차] Programmers Level.2 땅따먹기 def solution(land): dP = [[0,0,0,0] for _ in range(len(land))] dP[0] = land[0] for i in range(1, len(land)): for j in range(4): for k in range(4): if j != k: dP[i][j] = max(dP[i-1][k], dP[i][j]) dP[i][j] += land[i][j] answer = max(dP[len(land) - 1]) return answer - DP 문제. Programmers Level.2 삼각 달팽이 def solution(n): answer = [] graph = [[0] * i for i in range(1, n + 1)] n.. 2021. 12. 15.
[10회차] Programmers Level.2 큰 수 만들기 def find_larger(number): a = 0 b = 0 while b = number[a]: return b def solution(number, k): # 첫째 자리 수와 그 보다 이상인 값 중 첫 번째로 나오는 값을 찾는다. number = list(map(int, number)) # 그 사이에서 최솟값을 차례로 지우자. while k > 0: # 지울 게 없다면 첫째 자리수를 지우고, 이 과정을 반복 position = find_la.. 2021. 12. 14.
[9회차] Programmers Level.2 N개의 최소공배수 import math def solution(arr): answer = 1 for ar in arr: answer = answer * ar // math.gcd(answer,ar) return answer Programmers Level.2 뉴스 클러스터링 def solution(str1, str2): answer = 0 str1 = str1.upper() str2 = str2.upper() list1 = {} list2 = {} h = '' for i in range(len(str1)): if h == '': h = str1[i] else: h = h[-1] + str1[i] if h.isalpha(): if h not in list1: list1[.. 2021. 12. 13.