1. 문제
https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작
www.acmicpc.net
2. 풀이
# 1717번 : 집합의 표현
# 입력 코드
import sys
sys.setrecursionlimit(1000000)
input = sys.stdin.readline
# n : 집합 수, m : 연산 수
n, m = map(int, input().split())
# calList : 연산 리스트
calList = [list(map(int, input().split())) for i in range(m)]
# 연산 수행 코드
# setList : 집합 리스트
setList = [i for i in range(n+1)]
def union(a, b):
aParent = find(a)
bParent = find(b)
if aParent < bParent:
setList[bParent] = aParent
else:
setList[aParent] = bParent
def find(child):
if setList[child] != child:
setList[child] = find(setList[child])
return setList[child]
for i in calList:
o, a, b = map(int, i)
if o == 0:
union(a, b)
else:
if find(a) == find(b):
print("YES")
else:
print("NO")
3. Feedback
- 반복이 여러번 진행되면서 발생하는 Recursion 에러에서 당연히 에러에 만족할 수 있게 코드를 수정해야 한다고 생각해서 계속 에러가 발생했다.
때로는 여러번의 반복이 발생할 수밖에 없는 코드가 있을 수도 있다는 생각을 하게되는 코딩 문제였다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 탑(2493) (0) | 2023.08.08 |
---|---|
(Python)백준 코딩테스트 연습 - 신기한 소수(2023) (0) | 2023.08.07 |
(Python)백준 코딩테스트 연습 - 최소비용 구하기(1916) (0) | 2023.07.31 |
(Python)백준 코딩테스트 연습 - 토마토(7569) (0) | 2023.07.28 |
(Python)백준 코딩테스트 연습 - 트리(1068) (0) | 2023.07.22 |