diff --git "a/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\354\204\234\353\241\234\354\206\214\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/\354\204\234\353\241\234\354\206\214\354\225\214\352\263\240\353\246\254\354\246\230.py" new file mode 100644 index 0000000..8849c14 --- /dev/null +++ "b/CodingTest/CH10 \352\267\270\353\236\230\355\224\204 \354\235\264\353\241\240/\354\204\234\353\241\234\354\206\214\354\225\214\352\263\240\353\246\254\354\246\230.py" @@ -0,0 +1,38 @@ +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) #부모 테이블 초기화 + +# 부모 테이블 상에서, 부모를 자기 자신으로 초기화 +for i in range(1, v+1): + parent[i] = i + +# union 연산을 각각 수행 +for i in range(e): + a, b = map(int, input().split()) + union_parent(parent, a, b) + +# 각 원소가 속한 집합 출력 +print('각 원소가 속한 집합: ', end=' ') +for i in range(1, v+1): + print(find_parent(parent, i), end=' ') + +print() + +# 부모 테이블 내용 출력 +print('부모 테이블: ', end=' ') +for i in range(1, v+1): + print(parent[i], end=' ') \ No newline at end of file