kdk8361   6년 전


1. 현재 위치를 청소한다.
2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다.
3. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다.
4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 회전하고 2번으로 돌아간다.
5. 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다.
6. 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다.

절차 지향으로 이해하니 위와 같은 프로세스로 움직이면 만약 현재 위치의 4방향 모두를 청소했다면 항상 4번을 만족하여 5번으로 넘어가지 못해 4->2->3->4->2->3->4... 로 무한루프 걸리지 않나요? 제자리에서 뱅글뱅글 돌 것 같은데요. 4번이 만약 "4. 왼쪽 방향에 청소할 방향이 없다면, 그 방향으로 전진하고 2번으로 돌아간다."라면 괜찮을거 같은데요.

kdk8361   6년 전

프로세스가 순차적으로 진행된다는 이야기는 없었지만 정황상 순서대로인 것 같아 여쭙습니다. 5,6번이 4-1, 4-2라면 이해가 갑니다.

ingyo   6년 전

제가 문제 풀었을때는 네 방향 모두 청소되어있다면 안되어있는곳을 찾을 때 까지 후진했고, 만약 계속 청소가 안돼있으면 결국 벽에 부딪쳐 작동을 멈추었어요!

zerg1355   6년 전

실제 문제랑 다른거 같네요

sons   6년 전

지난 얘기지만 이게 전진을 하다가 청소가 안된 면을 찾으면
후진 하면서 네 방향 탐색 아닌가요?
근데 어떻게 청소가 안 된 바닥이 생기는 건가요? 이것 때문에 진짜 시간 엄청 뺏겼었는데,
혹시 기억 나시는분 답변 좀 부탁드려요

ingyo   6년 전

네 방향 탐색이니까 +-1칸인 부분들이 청소되어있고 뒤에 벽이있으면 다른곳이 청소되지않아도 끝났던걸로 기억해요!

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