1. 현재 위치를 청소한다. 2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. 3. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 회전하고 2번으로 돌아간다. 5. 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다. 6. 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다.
절차 지향으로 이해하니 위와 같은 프로세스로 움직이면 만약 현재 위치의 4방향 모두를 청소했다면 항상 4번을 만족하여 5번으로 넘어가지 못해 4->2->3->4->2->3->4... 로 무한루프 걸리지 않나요? 제자리에서 뱅글뱅글 돌 것 같은데요. 4번이 만약 "4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 전진하고 2번으로 돌아간다."라면 괜찮을거 같은데요.
kdk8361 6년 전
1. 현재 위치를 청소한다.
2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다.
3. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다.
4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 회전하고 2번으로 돌아간다.
5. 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다.
6. 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다.
절차 지향으로 이해하니 위와 같은 프로세스로 움직이면 만약 현재 위치의 4방향 모두를 청소했다면 항상 4번을 만족하여 5번으로 넘어가지 못해 4->2->3->4->2->3->4... 로 무한루프 걸리지 않나요? 제자리에서 뱅글뱅글 돌 것 같은데요. 4번이 만약 "4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 전진하고 2번으로 돌아간다."라면 괜찮을거 같은데요.