작성
·
467
0
http://boj.kr/9e4dc18b53ee4679be7d8a7e07c45439
안녕하세요 선생님 수업 잘 듣고있습니다! 다름이 아니라 위의 코드는 제가 쓴코드인데 선생님 코드와 비교해보았을때 거의 90%이상이 일치하며 논리또한 거의 대부분이 일치한다고 느끼는데 제 코드에서 메모리초과가 발생합니다. 도저히 이유를 알 수가 없어서 이렇게 질문 올립니다 . 감사합니다!!
답변 1
0
안녕하세요 360님 ㅎㅎ
queue<pair<int,int>>q;
q.push({0,0});
이부분이요. visited[0][0]을 걸고 push를 해야겠죠?
그리고 이게.. visited 배열을 기반으로 visited배열에 최단거리를 담아서 구현해야 하는데요.
if(visited[ny][nx]==1)continue;
if(arr[ny][nx] == 0)continue;
arr[ny][nx] = arr[y][x]+1;
앞의 코드를 보면 맵을 나타내는 arr라는 배열에다가 최단거리 배열을 담고 있죠? visited 배열을 기반으로 해주세요.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
arr는 원본배열입니다. 문제에서 주어지는 맵을 나타내는데요.
보통 어떤 변수을 만들 때 주어지는 의미를 담고 이 의미에 따라 로직이 구성되어야 합니다.
arr는 맵을 나타내고
visited는 최단거리 배열을 나타냅니다.
이러한 역할을 수행하도록 로직을 구축하는 편이 좋기 때문에 최단거리 배열은 visited 배열에다가 담아야 합니다.
선생님 감사합니다! arr배열이 아니라 꼭 visited배열에 담아야아는 이유가 있을까요?