▶문제설명
[BOJ] 백준 14503. 로봇 청소기
▶Hint
시뮬레이션 문제이다.
네 방향을 회전하며 청소할 공간을 탐색하는 과정에서
청소한 공간을 찾았는지 찾지 못했는지 판단하는 플래그 역할의 변수를 활용하면
청소할 공간을 찾아서 청소를 한 경우와 그러지 못 한 경우를 분기점으로 하여 프로그램의 흐름을 바꿀 수 있다.
※ 청소할 공간이 없음 = 이미 청소를 했거나 벽임
로봇 청소기는 현재 위치에서 자신의 왼쪽 방향만 체크할 수 있다.
자신의 현재 방향에서 왼쪽만 보는 방법으로 네 방향을 모두 체크하면서
아래의 케이스를 확인하여 수행한다. (flag_go : OFF 상태로 시작)
case 1. 아직 청소를 안 한 공간이 있음
: 왼쪽으로 회전한 뒤 앞으로 한 칸 이동시킨다 (flag_go : ON으로 변경)
case 2. 청소할 공간이 없음
: 왼쪽으로 회전한다.
청소할 곳을 찾은 경우 flag_go는 ON상태일 것이고
그렇지 못한 경우는 flag_go는 OFF 상태가 된다.
flag_go가 ON인 경우 청소를 수행한 뒤 다시 네 방향을 탐색하도록 구현하고,
flag_go가 OFF인 경우 아래의 케이스를 확인하여 수행하도록 구현한다.
case 3. 뒤로 한 칸 후진할 공간이 있음
: 방향은 고정하고 한 칸 후진하여 다시 네 방향 탐색을 반복한다.
case 4. 뒤가 벽으로 막혀있어 후진이 불가능함
: 청소를 종료한다.
맵의 범위를 벗어나는 경우는 벽으로 처리해야함에 유의하자.
▶Solution
마지막 수정 일시 : 2019.04.09. 12:03
'■ 알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글
[BOJ] 백준 14888. 연산자 끼워넣기 (0) | 2019.04.10 |
---|---|
[BOJ] 백준 13460. 구슬 탈출 2 (0) | 2019.04.09 |
[BOJ] 백준 16637. 괄호 추가하기 (0) | 2019.04.08 |
[BOJ] 백준 16918. 봄버맨 (0) | 2019.04.06 |
[BOJ] 백준 16928. 뱀과 사다리 게임 (0) | 2019.04.06 |