골드4 : bfs 문제이다.
풀이
- bfs는 가중치가 없는 그래프의 최단 거리 문제를 풀 때 사용하는 방법이다.
- 이 문제는 최단 거리 문제이므로 이 풀이를 선택하는 것은 맞다.
- 그런데 생각해보면, 이번에는 해당 칸에 방문했는가를 기준으로 다음 노드를 탐색하는 것으로는 부족하다.
- 특정 칸에 방문할 수 있는 방법은 그냥 도착한다, 벽을 부수고 도착한다. 두가지로 나뉜다.
- 그리고 그 상황에서 다음 칸을 이동할 때에도 도착한 상태에 따라 다음칸을 갈 수 있는지 없는지로 나뉜다.
- 즉, 특정칸에 방문했을 때, 상태가 두가지로 나뉜다는 것이다.
- 종료는 bfs 특성상, 같은 너비인 상태에서(경로 cost가 같은 상태에서) 진행되기 때문에 목표 위치까지 도착하는 순간이 최단 거리이다.
- 그렇다면 q에 넣는 노드의 정보에, 지금 벽을 뚫었는지 여부가 중요하게 된다.
Code
Reference