1. 1,2,3회에 걸쳐서 같은 방향으로 전진할 수 있는가? 갈 수 있다면 그 방향에 큐를 넣고 그 방향에 대해서 비지트 함수에 넣어 둡니다. 2. 현재 자리에서 턴한 것들에 대해서 큐에 넣어 둡니다. 같은 방향이면 큐에 넣지 않는 다는 것을 알겠는데 반대방향에 대해서도 큐에 넣지 않는 이유는 무엇인가요? 예를 들어, 현재 dir = 1 이 어서 동쪽을 바라보고 있는데, i = 1 이어서 동쪽에 대한 것은 안넣습니다. 그런데 opp(1) = 2 입니다. i = 2 일때도 넣지 않습니다. 그 이유는 무엇인가요? 아 아래 큐에 넣을때 cnt+1 이 들어가기 때문입니다. 저 조건을 없애고, opp 라면 2를 들어가는 코드를 짜보도록 하겠습니다. 오께이 정답 맞습니다. 여기서 굉장히 특이한 점은 visit 가 3차원이라는 것입니다. 단순하게 지나간 것으로 끝나느게 아니라 어떤 방향으로 지나갔는지도 매우 중요합니다. 이것을 예제를 통해서만 바로 찾기는 어렵습니다. 그리고 갈 수 있는 것에 대해서 체크를 합니다. 여기서 맵을 벗어나가너, 벽이면 break 를 하는 것 그리고 다음 것을 조사할때 continue 를 하는 것은 굉장히 중요합니다. 저는 앞으로 break 와 continue 를 잘 사용하도록 하겠습니다. 그리고 아래에서 회전만 하고 넣어주는 것 입니다. 방문했던 곳이면 패스, 같은 방향이면 패스, 방향이 다르면 회전2번, 회전 1번 이렇게 합니다. 회전에 대한 정보를 이미 가지고 있기 때문에 따로 dir 에 대한 변수를 사용하지 않습니다. |
Programming/Algorithm