11724번: 연결 요소의 개수
첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주��
www.acmicpc.net
<내 코드>
import sys
sys.setrecursionlimit(10000)
def dfs(v):
done[v] = v
for i in gragh[v]:
if (i != 0) and (i not in done):
dfs(i)
vertex, edge = map(int, input().split())
gragh = [[0]*(vertex + 1) for _ in range(vertex + 1)]
done = [0]*(vertex + 1)
cnt = 0
for _ in range(edge):
x, y = map(int, input().split())
gragh[x][y] = y
gragh[y][x] = x
for w in range(1, vertex+1):
if w not in done:
dfs(w)
cnt += 1
print(cnt)
처음에 런타임 에러가 계속 나서 뭐가 문제인지 몰랐다.. 검색 결과 python은 재귀 제한이 걸려있기 때문에 재귀 허용치가 넘어가면 런타임 에러를 일으킨다. 때문에 sys.setrecursionlimit(10000)처럼 작성해야 한다는 것을 알게 됐다.
sys.setrecursionlimit() 메서드는 Python 인터프리터 스택의 최대 깊이를 필요한 제한으로 설정하는 데 사용된다. 이 제한은 모든 프로그램이 무한 재귀에 들어가는 것을 방지한다. 제한이 너무 높으면 충돌이 발생해 주의가 필요하다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 2583] 영역 구하기 - Python (그래프, BFS) (0) | 2020.08.31 |
---|---|
[백준 1012] 유기농 배추 - Python (그래프, DFS) (0) | 2020.08.31 |
[백준 2606] 바이러스 - Python (그래프 탐색, DFS) (0) | 2020.08.30 |
[백준 2178] 미로 탐색 - Python(BFS, 그래프 탐색) (0) | 2020.08.30 |
[백준 1260] DFS와 BFS - Python (그래프 탐색) (0) | 2020.08.30 |