반례입니다.
답은 4가 나와야 하는데 7이 나옵니다.
63번째줄과 70번째 줄에서
다음 칸에 해당 방향으로 이미 방문한 적이 있고, 다음 칸의 거울의 최소 횟수가 지금의 횟수보다 작은 경우 방문을 하지 않는데
반례에서 12행 9열의 교차하는 부분의 '.'에서를 보면
위에서 내려올 때의 거울 최소값인 1로 먼저 그 칸의 CNT값이 갱신되고 나서,
4행 2열을 통해서 도달하는 루트 1가지,
4행 7열을 통해서 도달하는 루트 1가지로 12행 9열에 도달하게 되는데
이 때 둘 중 나중에 12행 9열에 도달하는 루트는
1)해당 방향으로 12행 9열에 이미 도달한 적이 있고
2) 해당 칸의 CNT값이 현재의 거울 최소횟수보다 낮으므로
12행 9열에 방문하지 않게 되고, 해당 경로를 체크하지 않게 됩니다.
반례에서는 4행 2열을 통해서 도달하는 루트가 최단인데, 이 루트가 큐에서 나중에 pop되어
체크가 안되는 듯 합니다.
mammoth10 5년 전
지금까지 넣은 tc는 다 돌아가는데 못찾겠네요.. 도와주세요