[BOJ 25208] 백준 25208번 - 새벽의 탐정 게임
1. 문제
$25208$. 새벽의 탐정 게임 (2022 인하대학교 프로그래밍 경진대회(IUPC) D번)
백준 25208번 - 새벽의 탐정 게임 (https://www.acmicpc.net/problem/25208)
2. 풀이
한 면이 뚫려있다는 조건이 없다면, 최소 이동 횟수를 구하는 평범한 BFS 문제이다. 그런데 이 조건이 추가됨에 따라서, 각 칸 (y, x)에서 뚫려있는 면의 방향에 따라 총 여섯 가지 상태가 추가로 존재하게 된다. 따라서, BFS에서 visited 배열을 3차원으로 만들어주어야 한다. (visited[N][M][6])
D를 시작점으로, R을 도착점으로 하는 BFS를 수행한다. 이때, 현재 뚫려있는 면의 방향과 현재 굴리려는 방향의 두 요소에 따라서, 다음 번에 뚫려있는 면의 방향이 결정된다. 이는 조건문을 사용하거나 배열로 한번에 관리할 수 있다.
종료 조건은 도착한 칸이 R이면서 뚫려있는 면이 바닥일 경우이다. 단, 도착한 칸이 R인데 뚫려있는 면이 바닥이 아니라면, 도둑이 바로 승리를 선언하기 때문에 이 경우는 더이상 BFS가 진행되지 않도록 해야 한다. queue에 해당 node를 집어넣지 않는다는 의미이다.
3. 채점 결과

4. 회고
칸이 R이면서 뚫려있는 면이 바닥이 아닌 경우에도 queue에 node를 담아 BFS가 계속되어버리게 구현해서 WA를 받았다.
댓글남기기