[DFS/BFS] 11724- 연결요소의 개수

조은지·2021년 9월 2일
0

링크 - 연결요소의 개수

코드

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를 사용해봐야겠네요~

0개의 댓글

관련 채용 정보