DFS/BFS 깊이 우선 탐색 / 넓이 우선 탐색 설명은 이전 글에 있으니 생략하겠다. 백준 2644 촌수계산 from collections import deque n = int(input()) p1, p2 = map(int, input().split()) m = int(input()) relat = [] res = [] visited = [False] * (n+1) for _ in range(m): x, y = map(int, input().split()) relat.append([x, y]) relat.append([y, x]) graph = [[]] for i in range(1, n+1): temp = [] for x in relat: if x[0] == i: temp.append(x[1]) gr..
그리디 그리디는 현재 순간에서 최고의 선택을 하는 알고리즘 1789 수들의 합 s = int(input()) hap = 0 ans = 0 while s >= hap: ans += 1 hap += ans if s < hap: break print(ans - 1) 1449 수리공 항승 n, l = map(int, input().split()) leak = list(map(int, input().split())) leak.sort() start = leak[0] cnt = 1 for x in leak[1:]: if x in range(start, start + l): continue else: start = x cnt += 1 print(cnt) 11501 주식 t = int(input()) for _ in ..
다이나믹 프로그래밍 효율적인 알고리즘을 위해 사용할 수 있는 기법. top-down(메모이제이션, 하향식) / bottom-up(상향식) 방식이 있다. 간단하게 설명하면 문제를 작은 문제부터 해결하여 큰 문제의 답을 도출하는 방식. 백준 17202 핸드폰 번호 궁합 a = list(input()) b = list(input()) data = [] for i in range(len(a)): data.append(a[i]) data.append(b[i]) dp = [0 for _ in range(15)] for i in range(len(data)-1): dp[i] = (int(data[i]) + int(data[i+1])) % 10 for i in range(14, 1, -1): for j in range..