Personal Study/백준 알고리즘 풀이

[Python] 백준 11724 DFS 메모리 초과

vㅔ로 2022. 6. 24. 18:49
728x90

평화롭게 백준 11724번을 풀고 있었는데 진짜 이해가 안 되는 상황이 발생했다.

 

코드가 계속 메모리 초과가 일어나기 시작한 것...

DFS로 구현하고 있었는데 오기가 생겨서 BFS로 안 바꾸고 계속 풀어봤다.

그래도 계속 안 되길래 열받아서 다른 사람 코드를 가져와서 제출해봤는데 또! 메모리 초과가 떴다. 

 

import sys
sys.setrecursionlimit(10**6)


def dfs(start):
    visited[start] = True
    for index in graph[start]:
        if not visited[index]:
            dfs(index)


n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [False] * (n+1)
count = 0
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)
for i in range(1, n+1):
    if not visited[i]:
        dfs(i)
        count += 1
print(count)

문제가 되었던 코드다.

 

이쯤 되니 화가 나기 시작해서 ㅋㅋㅋㅋ 구글링을 열심히 했더니...

문제는.... setrecursionlimit 이었다...

처음에 다른 문제에서 했던 대로 10**6으로 당연하게 생각했던 부분이 문제였던 거였다. 

10000으로 고쳐서 내니 바로 통과가 돼서 정말... 정말 허무했다..

앞으로는 생각하고 코딩해야겠다...

 

혹시나 Python DFS 구현에서 원인 모를 메모리 초과를 겪는 분들에게 도움이 되고자 글을 작성했다. 

728x90

'Personal Study > 백준 알고리즘 풀이' 카테고리의 다른 글

[Python] itertools 정리  (0) 2022.07.22
Greedy Algorithm  (0) 2022.01.08
[python] 짧은 지식 - 리스트 정렬  (0) 2021.12.24
규칙  (0) 2021.09.04