18번째 줄의 break에 의해서 큐에 원소가 남아있는데도 탐색을 종료할 수 있고, 이 원소는 다음 케이스 때 사용됩니다.
9번째 줄을 11번째 줄로 옮기면 됩니다.
7562번 - 나이트의 이동
큐에는 원소가 하나 들어가고 하나 나오고가 반복되는 것이 아니고, 한 번에 여러 개의 원소가 들어갈 수 있습니다. 그래서 어떤 시점에 큐에 담겨있는 원소가 여럿일 수 있는데, 이 때 나온 원소가 끝 좌표라면 18번째 줄에 의해서 바로 break되어 루프를 탈출하게 됩니다. 그런데 아직 큐에는 여러 원소들이 남아있습니다.
다음 케이스가 되어 다시 bfs 함수에 들어왔을 때도 여전히 그 원소들은 남아있고, 12번째 줄이 새로운 시작점을 좌표에 넣으면 그 원소가 루프에서 바로 나오는 것이 아니라 이전 케이스에 큐에 들어갔던 원소들이 먼저 나오게 됩니다. 반면에 큐를 지역 변수로 선언하게 되면 bfs 함수가 종료되는 순간 큐도 같이 사라지고, 다음 케이스에서는 새로운 큐가 만들어지므로 이런 문제가 없게 됩니다.
댓글을 작성하려면 로그인해야 합니다.
specimen 5년 전
테스트 케이스를 하나로 했을 때는 답이 잘 나오는데
문제에서 제시한 예제를 복붙을 했을 때는 답이 이상하게 나옵니다..
음.. 어디서 뭔가 값이 변경된거 같긴 한데 계속 봐도 잘 모르겠네요..