입력 형식을 잘 보세요. M, N 순으로 주어지고, M = 가로, N = 세로입니다. 코드의 모든 부분이 이 순서를 지키고 있는지 확인하세요. 변수 이름은 문제에서 주어진 그대로 사용하기를 권장합니다. 그래야 헷갈리지 않습니다.
큐의 크기는 최소 100만이 되어야 합니다. 1000*1000 칸 모두가 BFS의 타겟이 될 수 있습니다. 임의로 1000칸이나 10000칸 정도로 잡고 이 정도면 충분하겠지 생각하면 안 됩니다. 또한 정답 역시 약 50만에 달하는 것이 가능합니다 (short로 담을 수 없습니다). 길이 지그재그로 나있는 경우를 생각해 보세요.
BFS의 방문 여부 기록은 큐에서 뺀 뒤가 아닌, 큐에 넣을 때 하는 것이 바람직합니다. 이미 다른 칸으로부터 방문하기로 예정한 칸의 정보를 또 갱신하거나, 한 좌표가 큐에 중복해서 삽입되는 것은 좋지 못한 결과를 낳을 가능성이 큽니다. 큐에 넣는 순간에 바로 방문 체크를 합시다.
인덱스가 배열 범위를 넘어가지 않는지 잘 확인합시다. 배열 범위를 벗어나는 칸에 단 한 번이라도 접근하려고 한다면 언제든 문제가 생길 수 있습니다. 이 때에도 1번에서 설명했듯이 가로, 세로를 헷갈리지 않아야 합니다.
djm03178 4년 전 10