2178번 - 미로 탐색
입력받은 map 배열에 지나온 경로를 '0'으로 바꾸면서 bfs를 진행하면 메모리 초과가 발생하게 됩니다.(주석처리 안된 코드)
하지만, visited 이차원 배열을 하나 더 만들어서 지나온 경로를 true로 설정하면서 bfs를 진행하면 답이 맞게 나옵니다.(주석처리된 코드)
두 방법에 무슨 차이가 있어서 하나는 메모리 초과가 발생하는 걸까요..?
if(map[ncol][nrow]=='1') { Q.push({ncol,nrow,k+1}); }
18, 34번째 줄 Q 에 넣을 때 중복해서 넣을 수 있습니다.
Q.push 이후
map[ncol][nrow] = '0'
을 추가해서 중복해서 Q에 넣지 않도록 해주시면 됩니다.
혹은 map 변수의 값을 따로 써야 한다면, 주석처리 된 것처럼 별도 변수를 만들어 중복 push 하지 않도록 하시면 됩니다.
오!! 해결됐습니다
선생님 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
jinny9650 2년 전
입력받은 map 배열에 지나온 경로를 '0'으로 바꾸면서 bfs를 진행하면 메모리 초과가 발생하게 됩니다.(주석처리 안된 코드)
하지만, visited 이차원 배열을 하나 더 만들어서 지나온 경로를 true로 설정하면서 bfs를 진행하면 답이 맞게 나옵니다.(주석처리된 코드)
두 방법에 무슨 차이가 있어서 하나는 메모리 초과가 발생하는 걸까요..?