Skip to content

Commit ac8e6d2

Browse files
committed
feat: 3월 1주차 과제 문제 답
1 parent d421e34 commit ac8e6d2

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

_WeeklyChallenges/W13-[Union-Find]/Assignment_BOJ_1717_집합의표현.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,36 @@
44
유형: Union-Find, Graph
55
'''
66

7-
# PR 올릴 때 과제 정답 공개 예정
7+
import sys
8+
sys.setrecursionlimit(10 ** 6) # 재귀 깊이 제한 늘리기
9+
input = sys.stdin.readline
10+
11+
# Union 연산(두 집합을 합치기 위한 함수)
12+
def union(a, b):
13+
p_a = find(a)
14+
p_b = find(b)
15+
16+
if p_a > p_b: # 값이 더 작은 쪽을 부모로 설정
17+
parent[p_a] = p_b
18+
else:
19+
parent[p_b] = p_a
20+
21+
# Find 연산(같은 집합에 속하는지 확인하기 위한 함수)
22+
def find(a):
23+
if a != parent[a]:
24+
parent[a] = find(parent[a]) # 경로 압축
25+
return parent[a]
26+
27+
# 연산 수행
28+
n, m = map(int, input().split())
29+
parent = [i for i in range(n + 1)] # 초기: 각 원소가 자기 자신을 부모로 가짐
30+
31+
for _ in range(m):
32+
flag, a, b = map(int, input().split())
33+
if flag == 0: # 합집합 연산
34+
union(a, b)
35+
else: # 같은 집합 확인 연산
36+
if find(a) == find(b):
37+
print("YES")
38+
else:
39+
print("NO")

0 commit comments

Comments
 (0)