본문 바로가기
알고리즘/백준

[백준 14503] 로봇 청소기 (C++)

by Bloofer 2020. 7. 7.

A. 문제설명

https://www.acmicpc.net/problem/14503

문제에 대한 자세한 설명은 링크 참조

 

1. 로봇 청소기가 방 안을 청소

2. 방은 N*M 크기의 배열로 되어있으며 벽이 있는 공간은 청소할 수 없음

3. 로봇청소기는 먼저 현재 위치를 청소하고

3-1. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진

3-2. 왼쪽 방향에 청소할 공간이 없다면, 그 방향으로 회전

3-3. 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진

3-4. 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춤

4. 최종적으로 청소기가 동작을 멈출 때, 청소한 칸의 갯수를 구하라

 

B. 접근법

시뮬레이션

 

3번의 로봇 청소기의 동작을 충실히 알고리즘으로 구현하여 청소를 못하는 조건이 올 때까지 무한루프 안에서 동작

 

C. 풀이

1. 로봇 청소기가 종료조건이 될 때까지 무한루프 안에서 청소를 반복

2. 로봇 청소기의 탐색 알고리즘 적용, 종료 조건시 무한루프 탈출

3. 청소된 칸의 갯수를 계수

 

D. 내 코드