[파이썬] 13549 숨바꼭질 3 from collections import deque n, k = map(int, input().split()) q = deque([[n, 0]]) visited = [0] * 100001 while q: x, c = q.popleft() visited[x] = 1 if x == k: print(c) break if 2 * x = 0 and visited[x - 1] == 0: q.append([x - 1, c + 1]) bfs Algorithm/boj 2022.05.09
[파이썬] 1865 웜홀 import sys input = sys.stdin.readline tc = int(input()) def bellmanford(start): dist[start] = 0 for i in range(n): for s, e, t in edges: if dist[e] > dist[s] + t: dist[e] = dist[s] + t if i == n - 1: return True return False for _ in range(tc): n, m, w = map(int, input().split()) dist = [10000] * (n + 1) edges = [] for _ in range(m): s, e, t = map(int, input().split()) edges.append((s, e, t)) ed.. Algorithm/boj 2022.05.09
[파이썬] 11779 최소비용 구하기 2 import heapq import sys input = sys.stdin.readline INF = int(1e9) n, m = int(input()), int(input()) graph = [[] for _ in range(n + 1)] distance = [INF] * (n + 1) path = [[i] for i in range(n + 1)] for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b, c)) start, end = map(int, input().split()) def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while.. Algorithm/boj 2022.05.04
[파이썬] 1916 최소비용 구하기 import heapq import sys input = sys.stdin.readline INF = int(1e9) n, m = int(input()), int(input()) graph = [[] for _ in range(n + 1)] distance = [INF] * (n + 1) for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b, c)) start, end = map(int, input().split()) def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) if.. Algorithm/boj 2022.05.04
[파이썬] 16952 A->B a, b = map(int, input().split()) count = 1 while b > a: if b % 10 == 1: b //= 10 elif b % 2 == 1: break else: b //= 2 count += 1 print(count if b == a else -1) 그리디 Algorithm/boj 2022.05.03
[파이썬] 1167 트리의 지름 n = int(input()) tree = [[] for _ in range(n + 1)] visited = [0] * (n + 1) m = [1, 0] for _ in range(n): cur = list(map(int, input().split())) num, li = cur[0], cur[1:-1] for i in range(0, len(li), 2): tree[num].append([li[i], li[i + 1]]) def dfs(s, d): global m if d > m[1]: m = [s, d] visited[s] = 1 for t in tree[s]: if visited[t[0]] == 0: dfs(t[0], t[1] + d) dfs(1, 0) visited = [0] * (n + 1) d.. Algorithm/boj 2022.05.03
[파이썬] 9019 DSLR import sys input = sys.stdin.readline from collections import deque t = int(input()) for _ in range(t): n, m = map(int, input().split()) visited = [0] * 10001 q = deque([[n, '']]) while q: cur, s = q.popleft() if cur == m: print(s) break if visited[cur] == 0: q.append([cur * 2 % 10000, s + 'D']) q.append([cur - 1 if cur > 0 else 9999, s + 'S']) q.append([cur % 1000 * 10 +.. Algorithm/boj 2022.05.03
[파이썬] 1389 케빈 베이컨의 6단계 법칙 INF = int(1e9) n, m = map(int, input().split()) graph = [[INF] * (n + 1) for _ in range(n + 1)] for a in range(1, n + 1): for b in range(1, n + 1): if a == b: graph[a][b] = 0 for _ in range(m): a, b = map(int, input().split()) graph[a][b] = graph[b][a] = 1 for k in range(1, n + 1): for a in range(1, n + 1): for b in range(1, n + 1): cur = min(graph[a][b], graph[a][k] + graph[k][b]) graph[a][b] =.. Algorithm/boj 2022.05.03
[파이썬] 1644 소수의 연속합 n = int(input()) li = [False] * 2 + [True] * (n - 1) left, right = 2, 2 acc = left ans = 0 for i in range(2, n + 1): for j in range(2 * i, n + 1, i): if li[j]: li[j] = False def find_next(num): while num < n: num += 1 if li[num]: return num return False while left Algorithm/boj 2022.04.29
[파이썬] 1806 부분합 n, m = map(int, input().split()) li = list(map(int, input().split())) left, right = 0, 0 acc = li[left] ans = n flag = 0 while left = m: flag = 1 ans = min(ans, right - left + 1) acc -= li[left] left += 1 else: right += 1 if right < n: acc += li[right] print(ans if flag else 0) 투포인터 Algorithm/boj 2022.04.29