Younghun Go
BOJ 2206 - 벽 부수고 이동하기 본문
문제
N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.
만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다.
맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.
일반적인 BFS로 해결할 수 있는 문제.
벽을 부순 경우, 아닌 경우를 체크해야하기 때문에 현재 이동한 거리와 벽 부순 유무를 큐에 담아준다.
'알고리즘' 카테고리의 다른 글
최단 경로 알고리즘 정리 (0) | 2021.03.16 |
---|---|
BOJ 2792 - 보석 상자 (0) | 2020.09.21 |
BOJ 4991 - 로봇 청소기 (0) | 2020.09.13 |
BOJ 10826 - 피보나치 수 4 (0) | 2020.09.06 |
BOJ 2294 - 동전 2 (0) | 2020.09.06 |
Comments