dudgh9661   3년 전

메모리 초과가 뜨는데.. 256MB이면, 256 * 10^6이잖아요? 이 코드에서 메모리 초과가 나는 이유를 모르겠습니다. 대충 계산해봐도 200MB는 넘지 않는 것 같아서요 ㅠ

모두 short로 변경해도 메모리 초과가 납니다...

제가 공간 복잡도 계산을 잘못한거겠죠..? 고수님들 도와주시면 감사드리겠습니다.

아! 그리고, 이 문제를 BFS가 아닌, 이런식으로 풀면 로직상 틀린 것이 있나요?

djm03178   3년 전

BFS를 할 때는 큐에 넣기 전에 방문 표시를 해야 합니다. 큐에 넣은 뒤에 할 경우, 이미 큐에 중복된 원소들이 들어간 상태일 수 있습니다.

djm03178   3년 전

그리고 지금의 이 코드가 바로 BFS가 맞습니다.

dudgh9661   3년 전

메모리 초과가 나는 이유는 뭔가요??? 같은 곳을 계속 방문해서 일종의 무한루프에 빠졌기 떄문인가요?

djm03178   3년 전

어떤 정점이 두 번 큐에 들어갔다고 합시다. 그러면 두 번 뒤에는 그 정점으로부터 출발한 것들이 다시 한 번 한 정점에 모일 수 있고, 그러면 그 정점은 4번 큐에 들어가게 됩니다. 두 번 뒤에는 8번, 그 뒤에는 16번, ... 이렇게 늘어나다 보면 나중에는 한 순간에 큐에 별의 수보다도 많은 정점을 담으려고 하게 될 수도 있습니다.

dudgh9661   3년 전

아 .. 감사합니다! 이해했습니다. 말씀해주신 힌트 덕분에 통과하게 되었네요.. 

전 꼭 queue를 사용해서 구현해야만 BFS라고 생각했었네요.. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.