[백준] 1717번 집합의 표현 (Python)

지윤·2023년 4월 9일
0

👩🏻‍💻

스터디 숙제로 유니온 파인드를 풀게 되었는데 문제들이 너무 어려워서 개념 이해를 하고자 혼자 찾아서 풀게된 문제다.
이 문제를 덕분에 유니온 파인드에 대한 접근 방법을 이해하게 되어서 여러가지 방법으로 응용할 수 있었다!

코드

import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)
     
def find(a):
    if a == parent[a]: # 자기 자신이 루트 노드이면 a 반환
        return a
    temp = find(parent[a]) # a의 루트 노드 찾기
    parent[a] = temp # 부모 테이블 갱신
    return parent[a]

def union(a, b):
    rootA = find(a) # 3
    rootB = find(b) # 2
    if rootA != rootB:
        parent[rootA] = rootB
    else:
        return

def check(a, b):
    if find(a) == find(b):
        return "YES"
    else:
        return "NO"

n, m = map(int, input().split())
parent = dict()

# 초기화
parent = [i for i in range(n + 1)]

for i in range(m):
    number, a, b = map(int, input().split())

    # union
    if number == 0:
        union(a, b)
    #find
    else:
        print(check(a, b))
profile
떠돌이 컴공

0개의 댓글