3차원 공간으로 bfs 를 하는 것은 이해하신 것 같고, 이 경우 que 에 들어간 순서가 cnt 증가순으로만 유지할 수 있으면
찾는 결과가 최소값이라고 할 수 있겠죠.
아마도 동일한 공간에 도착했을 때 4방향에서 올 수 있으면 문제가 되지 않을까 생각하신 것 같은데,
위 소스는 1~3칸 움직이거나 좌우로 회전하는 것을 한번으로 해서 큐에 넣고 있어서 cnt 가 증가순을 유지합니다.
즉, x, y에서 출발하면 해당 방향으로 1~3으로 가는 경우, 좌턴, 우턴 이렇게 5가지 상황을 cnt 하나 증가시키면서 고려합니다. (벽이 없다는 전제일때....)
그래서 문제가 안되구요.
조건문은..
조건문 자체보다는 else 가 문제네요.
정답의 경우는 else 가 벽이나 밖으로 나가는 경우에 break 이나
오답의 경우는 방문한 경우도 break 되므로 오답이 됩니다.
한칸 갔는데 벽이나 밖으로 나가는 경우에는 두칸, 세칸을 안가도 되지만
한칸째가 이미 갔던데라고 두번째 세번째가 안가도 되는 것은 아니니까요..
제가 질문을 잘못이해했거나 답변이 이상하면 알려주세요.
jerryprk 4년 전
모든구간에서 방향에따라 최소값이 나올 수 있으므로
해당문제를 3차원배열로 해서 풀어야 한다는것은 알겠습니다
BFS의 특성상 먼저 도착하는것이 가장 빠른 탐색수순이다 인데,
위 4방향의 가정이 추가되면 해당 부분에는 최소 3가지의 탐색수순이 나오는거아닌가요?
이것이 배제되어도 맞는 이유가 궁금하고
아래 소스에서 range와 visit을 비교하는 부분이있습니다
범위를 벗어나거나 벽이아니라면, 해당칸에 같은방향으로 왔던적이있다 를 판별하는데
둘을 동시에판별하면 틀리고
둘을 종속관계로 판별하게되면 맞다고합니다
3의 경우 들어가게되며, 이외의 모든부분은 탈락인데,
4의 경우를 배제하게된다해서 틀렸다고 나오는건가요?