From 3f9bd36c16aa8cddd51ff22a7d586604a98640ae Mon Sep 17 00:00:00 2001 From: heerucan Date: Sun, 27 Mar 2022 19:01:16 +0900 Subject: [PATCH] =?UTF-8?q?[Add]=20=ED=81=AC=EB=A3=A8=EC=8A=A4=EC=B9=BC=20?= =?UTF-8?q?=EC=95=8C=EA=B3=A0=EB=A6=AC=EC=A6=98=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...14\352\263\240\353\246\254\354\246\230.py" | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git "a/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\355\201\254\353\243\250\354\212\244\354\271\274\354\225\214\352\263\240\353\246\254\354\246\230.py" "b/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\355\201\254\353\243\250\354\212\244\354\271\274\354\225\214\352\263\240\353\246\254\354\246\230.py" index e69de29..e7a55fb 100644 --- "a/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\355\201\254\353\243\250\354\212\244\354\271\274\354\225\214\352\263\240\353\246\254\354\246\230.py" +++ "b/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\355\201\254\353\243\250\354\212\244\354\271\274\354\225\214\352\263\240\353\246\254\354\246\230.py" @@ -0,0 +1,44 @@ +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 + +# 노드와 간선 개수 입력받기 +v, e = map(int, input().split()) +parent = [0]*(v+1) #부모 테이블 초기화 + +# 모든 간선을 담을 리스트와 최종 비용을 담을 변수 +edges = [] +result = 0 + +# 부모 테이블 상에서, 부모를 자기 자신으로 초기화 +for i in range(1, v+1): + parent[i] = i + +# 모든 간선에 대한 정보를 입력받기 +for _ in range(e): + a, b, cost = map(int input().split()) + # 비용순으로 정렬하기 위해서 튜플의 첫 번째 원소를 비용으로 설정 + edges.append((cost, a, b)) + +# 간선을 비용순으로 정렬 +edges.sort() + +# 간선을 하나씩 확인하며 +for edge in edges: + cost, a, b = edge + # 사이클이 발생하지 않는 경우에만 집합에 포함 + if find_parent(parent, a) != find_parent(parent, b): + union_parent(parent, a, b) + result += cost + +print(result) \ No newline at end of file