문제 출처
1. 문제설명
N*M
의 행렬로 표현되는 맵이 있다.
0
은 이동할 수 있는 곳, 1
은 이동할 수 없는 벽이 있는 곳을 나타낸다.
(1,1)
에서 (N,M)
까지 이동하려고 한다.
- 이동하지 않고 같은 칸에 머무르는 게 가능하다.
- 낮과 밤이 번갈아가면서 등장한다.
- 처음 이동할 때는 낮이고, 한번 이동할 때마다 낮과 밤이 바뀐다.
- 이동하지 않고 머무르는 경우에도 낮과 밤이 바뀌게 된다.
- 만약 이동하는 중에 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면,
K
개까지 부수고 이동해도 된다.
2. 알고리즘 설계
- 일반적인 BFS 문제 유형에서 낮과 밤이라는 조건이 추가된 문제이다.
N*M
크기의 맵에서 K
(1<=K<=10)개의 벽을 부술 수 있는데, 낮과 밤이 추가되었다.
- 이동할 수 있는 곳을 탐색해주면서, 벽을 부쉈을 때, 낮일 때, 밤일 때를 각각 체크해주면 된다!
3. 전체 코드
4. 소감