djm03178   4년 전

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

sgchoi5   4년 전

수고하셨습니다~~ 

bupjae   4년 전

[의견제시] 3번 문장에서 '큐에 넣을 때' 보다는 '큐에 넣기 전에'라고 하는 것이 좀 더 명확하지 않을까 합니다.

djm03178   4년 전

여기서 체크라는 말이 if 처리를 의미하는 게 아니라 v[y][x] = true; 를 말하는 거라서, q.push보다 전에 있든 후에 있든 상관은 없습니다.

djm03178   4년 전

용어를 살짝 바꿔봤습니다.

yoodly   4년 전

방문 체크의 위치만 바꿨는데 틀렸던 것이 맞는 걸로 바뀌었네요. 감사합니다!!

jh05013   4년 전

2번을 "토마토는 100만 개까지 있을 수 있으며, 큐의 크기는 최소 100만이 되어야 합니다."로 바꿔 주세요.

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