문제 중에서 동일한 상황이 아닌 경우에 visited 변수에 상태 개수에 따른 값을 배열에 1차원 더 추가해서 진행하자.
- 상태를 추가함으로써 얻는 이점으로는 모든 상황에 대해 생각할 수 있다는 것이다.
백준 2206. 을 예제로 설명.
생각을 해보자.
0,0의 정점에서 n,m 으로 가는 최단 경로 인데,
벽을 한 번 부수고 갈 때의 최단 경로, 벽을 부수지 않고 갈 때의 최단 경로가 있다고 하자.
억지로 1개로 하면 되지 않을까?
: [y][x] 그냥 이걸로 2차원 배열로
-> 단순하게 생각하면 그래도 될듯 하지만,
갱신할 때를 생각해보자.
동일한 좌표에 대해 부수고 들어오지 않을때 보다, 1개 부수고 들어왔을 때 값이 좋아서 갱신했다.
해당 좌표에서 next값 진행하려고 한다.
그런데 next 좌표 입장에서는 여기까지 오는데, 벽을 뚫고 왔을때의 최단경로
그냥 왔을 떄의 최단 경로를 알아야 한다.
그래야 내 입장에서도 벽을 부술까? 말까??? 에 대한 생각을 할 수 있다.
-> 지금 이 생각은 모든 상황에 대해서 생각을 하고 있는 것이다.
: 움직이는 미로 탈출의 문제의 경우, 매초마다 벽의 위치가 변경되고, 즉 시간마다 좌표들의 상태가 변경된다.
-> r,c로 이동하는데 몇초 뒤에 이동할 것인지에 따라서 상태가 다르다. 벽이 있어서 못갈 수 있고,
1) 중간 지점을 거치면서 방문을 하는데 벽을 부쉈는지,
안 부쉈는지에 대한 정보를 얻어서 추후에 벽이 나오면,
부술까???? 생각을 할 수 있따. 정보가 없다면, 부술까? 말까?
에 대한 생각을 할 수 없다.
2) 벽을 부수고 온상태에서의 dist값과
벽을 부수고 오지 않았을 때의 dist 값
모든 상황에 대해서 생각해야 한다.