dfs가 무려 2500만 개의 점을 탐색하게 될 텐데, 재귀 호출에 대한 정보는 스택 영역에 할당되므로 8MB 이상을 사용할 수가 없는데 이는 이를 훨씬 초과하게 됩니다.
애초에, 이 문제를 모든 가능한 좌표를 하나씩 방문하면서 푸는 건 무리라고 생각합니다.
10216번 - Count Circle Groups
1. 저도 정확한 이유는 모르겠지만, 운영체제마다 보통 1MB ~ 8MB를 스택 영역의 기본 한계로 잡습니다. 조정은 가능하다고 알고 있지만, 온라인 저지에서는 어떻게 할 수가 없습니다.
2. 4바이트 정도가 아니라, dfs에 전달되는 인자만 4바이트 2개에 8바이트고, 여기에 리턴 주소와 함수 내부에 선언된 지역변수들 등까지 계산하면 매 호출마다 20바이트는 넘어가리라고 생각됩니다. 재귀함수에서 조심해야 할 부분 중 하나인데, 호출 스택이 메모리에 그대로 쌓여가기 때문에 깊이가 깊어지는만큼 메모리 사용량이 늘어나게 됩니다.
댓글을 작성하려면 로그인해야 합니다.
skyinyour 6년 전
처음에는 큐를 사용해서 메모리초과가 나서 큐가 원인이라 생각했습니다.
다시 생각해보니 비슷할 것 같은데 struct 배열을 사용하여 다시 풀어보았지만
메모리 초과가 어디서 어떻게 왜 나는지 모르겠네요 ㅠㅠ