서로 중복되지 않는 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조입니다.
test_case = int(input())
def find_parent(a):
if parent[a] == a:
return a
else:
p = find_parent(parent[a])
parent[a] = p
return p
def union(a, b):
parent_a = find_parent(a)
parent_b = find_parent(b)
if parent_a != parent_b:
parent[parent_b] = parent_a
number[parent_a] += number[parent_b]
for _ in range(test_case):
f = int(input())
parent = dict()
number = dict()
for _ in range(f):
a, b = input().split(" ")
if a not in parent:
parent[a] = a
number[a] = 1
if b not in parent:
parent[b] = b
number[b] = 1
union(a, b)
print(number[find_parent(a)])
자료구조는 알고리즘을 푸는 데에 있어서 도구로 사용된다라는 말이 점점 체감이 되기 시작한다.
앞으로는 자료구조 공부를 할 때에는, 자료구조의 종류만 공부를 하는 것이 아니라, 해당 자료구조를 어떻게 사용하면 될 지에 대해서도 공부를 해야겠다.
어떠한 자료구조를 공부했을 때에 동시에 그 자료구조를 활용하는 알고리즘을 하나씩 풀어보면 더욱 도움이 될 것 같다.
열심히 해보자!