링크 - 연결요소의 개수
import sys
sys.setrecursionlimit(10000)
n,m= map(int, sys.stdin.readline().split())
graph=[[] for i in range(n+1)]
visited=[False]*(n+1)
for i in range(m):
s,e = map(int, sys.stdin.readline().split())
graph[s].append(e)
graph[e].append(s) #양방향
def dfs(v):
visited[v]=True
for i in graph[v]:
if not visited[i]:
dfs(i)
answer=0
for idx in range(1,n+1):
if not visited[idx]:
dfs(idx)
answer+=1
print(answer)
문제는 프로그래머스의 네트워크와 동일하고 전에 풀었던 음료 얼리기였나 그 문제와도 비슷했다.
input()함수 때문에 시간이 오래 걸렸다. 분명 로직은 맞았다고 생각했는데 계속 런타임에러가 나서 검색해보니 파이썬의 경우 최대 재귀 횟수(1000회)를 넘으면 오류가 발생한다고 한다
sys.setrecursionlimit(1000)
해당 코드를 통해 제한을 풀어줘야 한다.
또한 input()보다 sys.stdin.readLine()함수가 더 빠르다고 한다. 너무~느리면~ sys를 사용해봐야겠네요~