코딩 테스트/백준

[백준 1717번] 집합의 표현

nan-noo 2023. 4. 14. 22:58
728x90

https://www.acmicpc.net/problem/1717

 

1717번: 집합의 표현

초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작

www.acmicpc.net

2023.04.11 - [코딩 테스트/개념] - Union-Find

# 1 ≤ N ≤ 90

import sys

readline = sys.stdin.readline

n, m = map(int, readline().split())

union_find = [i for i in range(n + 1)]


def find(v):
    if union_find[v] == v:
        return v

    new_v = find(union_find[v])
    union_find[v] = new_v
    return new_v


def union(v1, v2):
    find_v1 = find(v1)
    find_v2 = find(v2)

    if find_v1 != find_v2:
        union_find[find_v2] = find_v1


for _ in range(m):
    calc, a, b = map(int, readline().split())

    if calc == 0:
        union(a, b)
    elif calc == 1:
        if find(a) == find(b):
            print("YES")
        else:
            print("NO")

두 집합을 합하고, 같은 집합인지 확인하고.. 유니온 파인드 문제다! 함수 구현했던 거 활용해서 바로 풀었다.

728x90

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준 2252번] 줄 세우기  (0) 2023.04.15
[백준 1976번] 여행 가자  (0) 2023.04.15
[백준 2193번] 이친수  (0) 2023.04.14
[백준 1463] 1로 만들기  (0) 2023.04.14
[백준 11051번] 이항 계수  (0) 2023.04.14