본문 바로가기

■ 알고리즘 문제 풀이/BOJ

[BOJ] 백준 1726. 로봇

▶문제설명

[BOJ] 백준 1726. 로봇

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



▶Hint


BFS 문제이다.


BFS 수행 시 모든 방향에 대해서 방문 체크를 해야한다는 점이 핵심이다.


- 어떻게 해당 위치에서 모든 방향에 대해 방문 체크를 수행하나?

visited[R][C][0 ~ 4] : 좌표 R,C에 방향 0, 1, 2, 3으로 방문했는지의 여부 체크


[Queue에서 꺼낸 뒤 수행해야 하는 일]

1. 현재 위치와 현재 방향이 도착지점인 경우 answer 값을 현재 카운트 값으로 업데이트


2. 현재 카운트 값이 answer보다 같거나 큰 경우는 더이상 볼 필요 없으므로 무시(continue)


3. 현재 위치에서 현재 방향으로 1칸/2칸/3칸 전진하는 경우에 대해 카운트를 1 증가시키면서 push

벽을 만나면 break 해주어야 함


4. 좌회전/우회전하는 경우에 대해 카운트를 1 증가시키면서 push


5. 두 번 회전하여 반대 방향을 보는 경우에 대해 카운트를 2 증가시키면서 push



▶Solution