Coding Test/백준

[백준 1717번] 집합의 표현

Lucian_Cho 2021. 2. 15. 16:34

# 문제

 


내 풀이
import sys
input = sys.stdin.readline
limit_number = 100000
sys.setrecursionlimit(limit_number)  # 재귀 제한을 여유 있게 해제


# 특정 원소가 속한 집합을 찾기 (Find 연산)
def find_parent(parent, x):
    # 루트 노드를 찾을 때까지 재귀적으로 호출
    if parent[x] != x:
        parent[x] = find_parent(parent, parent[x])
    return parent[x]


# 두 원소가 속한 집합을 합치기 (Union 연산)
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 = [i for i in range(n + 1)]  # 부모 테이블 생성 및 초기화

# 요구하는 연산 수행
for i in range(m):
    op, a, b = map(int, input().split())
    if op:  # 찾기 연산일 경우
        print('YES') if find_parent(parent, a) == find_parent(parent, b) else print('NO')
    else:  # 합치기 연산일 경우
        union_parent(parent, a, b)

 

생각해볼 점
나의 경우 재귀 제한을 풀어야 문제가 풀렸는데, 다른 답안들은 이에 상관없이 문제를 푼 느낌이다. 고민해볼 점이다.