: 문제를 읽어보고, 생각해야 한다.
모든 경우에 대해서 생각해보자.
0000
1110
0000
0111
0110
0000
과 같은 경우는 어떻게 될까?
-> 빙돌아서 가는 경우가 최단경로일때는 15이고, 그런데,
32의 벽을 뚫고 가는 경우도 있다. 이때는 9이다.
경주로 문제가 비슷한 문제라고 한다.
벽 부수고 이동과 동일한 방법으로 했는데 계속 틀린다. ㅋㅋ
1번.
벽을 부쉈다는 유무를 큐에다가 넣고 탐색하는 방식을 생각했는데
잘못된 생각이다. 지금 이렇게 하게 되면,
만약에 0번 인덱스에서 걸렸다고 한다면 나머지 1,2,3번의 cur는 벽을 부쉈다는 건데 탐색이 불가하다.
-> 문제를 풀기 전에 구상을 해보고, 잘못된 접근이라는 것을 판단해야 한다.
: 만약 0,1의 벽을 부수고 진행하고 있다. 그런데 다음 정점에 누적되어야 한다.
1번으로 하면 현재 정점에 대한 나머지 4번의 경우 문제가 되고,
2번으로 하더라도
6 5
00000
11110
00000
01111
01111
00010
-> 즉 벽이 있어서 못가는 영역이 있더라도 만약에 0밖에 없어서 빙 돌아서 갈수 있다는 거를 생각하게 되면, 나의 코드처럼. 방문체크를 먼저 처리하면 안된다.
큐에 넣을 수가 없다. 왜냐하면 최단거리로 가다가 이미 방문처리를 해버렸기 때문에 뱀처럼 돌아갈수 없는 구조의 코드이다.