이전에 작성한 UNION 알고리즘에 이어서 같은 유형의 문제이다.
분명 예제 입력을 활용하여 출력도 제대로 되었지만 이상하게 재귀관련 오류가 발생했다.
이것저것 찾아보니. 아주 단순했다.
기본적으로 파이썬의 재귀 깊이는 1000으로 설정되어있다고한다.
그래서 생각보다 재귀의 깊이가 깊어지다보니 Error가 발생한 것 이다.
그래서 재귀의 깊이를 문제에 맞게 설정하여 풀이했다.
설명은 이전의 UNION 풀이해서 했기에 간단하게 코드와 문제만 캡쳐하여 등록한다.
UNION에 대한 자세한 설명은 아래의 포스팅을 참고하자.
[백준] 24391 귀찮은 해강이 - 파이썬 [골드5]
이번에 처음으로 접하게된 그래프 이론중 UNION에 해당하는 문제다. 이해하는데 너무 쉬웠지만, 정리는 해볼 필요가 있다고 판단하여 정리한다. 문제 해강이는 앙중대학교에 다닌다. 해강이는 이
frenchruin.tistory.com
문제
import sys
input = sys.stdin.readline
sys.setrecursionlimit(1000000) # 재귀 깊이 설정
N, M = map(int, input().split())
joint = [0] * (N + 1)
for i in range(1, N + 1):
joint[i] = i
def union_find(V):
if V != joint[V]:
joint[V] = union_find(joint[V])
return joint[V]
def union(A, B):
A = union_find(A)
B = union_find(B)
if A > B:
joint[A] = B
else:
joint[B] = A
for i in range(1, M + 1):
T, A, B = map(int, input().split())
if T == 0:
union(A, B)
elif T == 1:
if union_find(joint[A]) == union_find(joint[B]):
print("YES")
else:
print("NO")
참조 👍👍
파이썬 재귀 깊이 제한 해제 (sys.setrecursionlimit())
개인적으로 그닥 좋아하지는 않지만, 재귀함수는 코딩을 하다보면 언젠가는 사용해야 할 필수불가결한 로직 형태의 하나이다. 그런데 간결함을 추구하는 파이썬의 철학 때문인지 기본으로 설
makasti.tistory.com
'CS > Algorithm' 카테고리의 다른 글
[백준] 2573 빙산 - 파이썬 [골드4] (0) | 2024.03.17 |
---|---|
[백준] 24391 귀찮은 해강이 - 파이썬 [골드5] (0) | 2024.02.17 |
[백준] 2225 합분해 - 파이썬 [골드5] (0) | 2024.02.12 |
[백준] 1012 유기농 배추 - 파이썬 [실버2] (1) | 2024.02.11 |