guftkcldh   3년 전

dfs 방식에서 bfs 방식으로 변경했는데도 메모리 초과가 납니다.

bfs 함수에서 if 안에 어떤 조건을 추가해야 메모리 초과가 발생하지 않을까요??

고수님들 조언 부탁드립니다.

palilo   3년 전

0-1 BFS 문제입니다 한 번 검색해보세요

이게 왜 메모리 초과가 나냐면 맵이 아래처럼 생겼을 때,

죄수가 왼쪽으로 이동하면서 왼쪽 부근의 check[][] 값을 다 1로 만들겁니다.

하지만 위, 아래로 갔다가 왼쪽으로 가면 check[][]값이 0이 되기 때문에 다시 큐에 넣는 작업을 할겁니다.

왼쪽 부근의 맵을 두 번 계산하게 되죠

맵이 훨씬 복잡해지면 같은 장소를 수 십번 방문할 수 있고, 큐에 너무 많은 데이터가 담겨서 터집니다. 

guftkcldh   3년 전

그러면 .과 #이 있을 경우에는 .을 먼저 방문한다는 조건을 달아주면 해결 가능하겠군요..

소중한 댓글 감사드립니다. 좋은 하루 되세요.

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