nove1080   2년 전

반례를 찾아주실수 있으실까요ㅜㅜ 

미로를 그려야해서 번거러우실거 같은데 어디가 이상하다고 알려주셔도 감사하겠습니다

wizardrabbit   2년 전

안녕하세요? 반례 드립니다:

입력:
1
3 3
###
#@#
#.#

정답:
2

출력:
IMPOSSIBLE

▶ 틀린 이유 한 줄 요약: 불이 전혀 도달하지 않아 f_vis의 값이 -1 인 경우 프로그램은 불이 -1초에 도달한 것으로 취급해 불이 도달하지 않은 곳을 통과할 수 없습니다.

preview

그림에서 0은 출발 지점이자 h_vis에 저장된 값입니다. -1은 f_vis에 저장된 값이며 불이 도달하지 않았음을 의미합니다.

이 반례에서, 코드의 63번째 줄에 의하면 새롭게 지나가게 될 곳이 불이 지나간 좌표와 같거나 클 경우 지나갈 수 없도록 처리합니다. 지나갈 수 없는 경우는 이동하는 동시에 불도 해당 위치로 번지거나, 이미 불길이 번졌음을 의미하니까요. 제대로 구현하셨습니다. 하지만, f_vis 값이 -1이라면 불이 아예 도달하지 않는 칸이므로 무조건 지나갈 수 있어야 합니다. 코드의 경우 새롭게 지나가려고 하는 칸의 h_vis는 1이 될 것이고, 이 경우 f_vis가 -1이므로 지나갈 수 없게 됩니다. 마치 코드는 불이 지나가지 않은 칸을 -1초에 지난 것처럼 간주하게 되는 것이죠.

따라서 질문자님이 하셔야 할 것은, f_vis 값이 -1인 경우를 따로 검사해 해당하는 경우에는 지나갈 수 있도록 바꾸는 입니다.

문제 해결에 도움이 되었기를 바랍니다!

nove1080   2년 전

wizardrabbit님 정성스럽게 답변해주셔서 정말 감사합니다!

덕분에 해결할 수 있을 것 같아요

좋은 하루 되세요 감사합니다:)

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