문제
https://www.acmicpc.net/problem/11724
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) #python이 정한 최대 깊이를 더 깊게 변경해줌
input = sys.stdin.readline
n, m = map(int, input().split())
a = [[] for _ in range(n+1)]
visited = [0] * (n+1)
def dfs(v):
visited[v] = True
for i in a[v]:
if not visited[i]:
dfs(i)
for _ in range(m):
s, e = map(int, input().split())
a[s].append(e)
a[e].append(s)
count = 0
for i in range(1, n+1):
if not visited[i]:
count += 1
dfs(i)
print(count)
설명
dfs를 이용한 문제.
아 왜이렇게 항상 헷갈리는 걸까..?ㅠㅠ
런타임 에러(recursionerror)가 발생했다
원인은 python에서 정해준 깊이 탐색 길이를 벗어나게 되면 이런 오류가 발생한다고 한다.
sys.setrecursionlimit(10000) 를 추가해주어 길이를 변경해주어야 한다.
'Coding Test > Python' 카테고리의 다른 글
| [프로그래머스] level1 / 최소직사각형 (1) | 2023.07.28 |
|---|---|
| [백준] ABCDE (0) | 2023.07.25 |
| [백준] 절댓값 힙 (0) | 2023.07.05 |
| [백준] 카드2 (0) | 2023.07.05 |
| [백준] 오큰수 (1) | 2023.07.05 |