삼성 SW 역량 테스트 기출 문제
https://www.acmicpc.net/problem/14503
Solution
문제 유형 : 시뮬레이션
구현해야 할 것
- 로봇청소기의 방향을 보고있는 방향의 왼쪽으로 회전
- 네 방향 다 막혀있을 때 한 칸 후진
사실 문제에서 주어진 로직들을 그대로 구현하면 되는 문제였다. 말은 쉽지만 나도 동서남북 방향 설정하는 것에 익숙치 않았기 때문에 쉽지만은 않았다. dx와 dy에 북동남서에 맞는 좌표를 차례대로 설정해준다. 그리고 robotCleaner를 네 방향이 막혀있고 후진도 못할 때 까지 반복한다.
# 1. 에서 현재 좌표가 청소를 안한 상태(0)면 청소를 해준다(-1).
# 2. 그리고 turn 함수를 통해 방향을 왼쪽으로 바꿔준다(turn 함수는 dx와 dy 배열가 인덱스로 북동남서의 방향을 정하기 때문에 인덱스만 리턴해준다.)
# 2.a 회전한 방향의 좌표를 저장하고, 청소를 안했으면 변수 값을 회전한 곳의 좌표와 방향으로 갱신해준다.
# 2.b 청소를 한 상태거나 벽이면 현재 좌표와 회전한 방향, 그리고 막혀있다는 의미로 cnt값에 1을 더해서 갱신한다(cnt 값이 4이면 네 방향 다 막혀있는 상태)
# 2.c cnt 값이 4이면 네 방향이 다 막혀있는 상태이므로, 후진을 해야한다. 후진을 할 때는 현재 가리키는 방향이 북이면 남으로, 동이면 서 이런 식으로 반대 방향으로 가기 때문에 인덱스를 (d+2) % 4 과 같이 설정하면 반대 방향을 가리키게 된다. 후진하는 방향의 상태가 청소를 한 상태면, 후진을 할 수 있기 때문에 방향은 그대로, 후진한 좌표와 cnt값을 0으로 초기화 해서 변수를 갱신한다.
# 2.d 후진 방향이 벽이면 현재 maps에서 -1(청소한 영역)의 개수를 리턴한다.
'Algorithm > BOJ' 카테고리의 다른 글
[백준/Python] 3190번 뱀 (0) | 2020.08.09 |
---|---|
[백준/Python] 16236번 아기 상어 (0) | 2020.06.29 |
[백준/Python] 2178번 미로 탐색 (0) | 2020.04.19 |
[백준/Python] 1260번 DFS와 BFS (0) | 2020.04.19 |
[백준/Python] 1012번 유기농배추 (0) | 2020.04.18 |