본문 바로가기

전체 글293

[Ch. 10 - 그래프 이론] 팀 결성 My code def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int,input().split()) parent = [0] * (n + 1) for i in range(1, n + 1): parent[i] = i for i in range(m): a, b, c = map(int, input().split()) if .. 2022. 2. 20.
[Ch. 9 - 최단 경로] 전보 My code import heapq INF = int(1e9) n, m, c = map(int,input().split()) graph = [[] for i in range(n + 1)] distance = [INF] * (n + 1) for i in range(m): x, y, z = map(int,input().split()) graph[x].append((y, z)) def dijkstra(c): q = [] distance[c] = 0 heapq.heappush(q, (0, c)) while q: dist, now = heapq.heappop(q) if distance[now] < dist: continue for i in graph[now]: cost = dist + i[1] if cost <.. 2022. 2. 17.
[Ch. 9 - 최단 경로] 미래 도시 My code 1 : Dijkstra 알고리즘 이용 import heapq INF = int(1e9) n, m = map(int,input().split()) graph = [[] for i in range(n + 1)] distance = [INF] * (n + 1) for i in range(m): a, b = map(int,input().split()) graph[a].append((b, 1)) graph[b].append((a, 1)) x, k = map(int,input().split()) start1 = 1 start2 = k def dijkstra(start): q = [] distance[start] = 0 heapq.heappush(q, (0, start)) while q: dist, n.. 2022. 2. 17.
[Ch. 8 - 다이나믹 프로그래밍] 효율적인 화폐 구성 My code n,m = map(int,input().split()) array = [] for i in range(n): array.append(int(input())) d = [10001] * (m + 1) d[0] = 0 for i in range(n): for j in range(array[i], m + 1): d[j] = min(d[j], d[j - array[i]] + 1) if d[m] == 10001: print(-1) else: print(d[m]) Answer n,m = map(int,input().split()) array = [] for i in range(n): array.append(int(input())) d = [10001] * (m + 1) d[0] = 0 for i in .. 2022. 2. 16.