그래프가 아닌 1차원 배열에서의 bfs 문제였다.
일단 최단거리를 구하라 했을 때 순회하는 거라면 bfs를 생각 해보는 게 좋을 것 같다.
1~100000의 범위의 1차원 배열에서
농부는 n의 위치에서 출발하고, 소는 k의 위치에 있다.
농부는 +1 , -1, *2 만큼 이동 가능하다.
한 번 이동하는데는 1분이 걸린다.
소를 잡는 데 걸리는 최소 시간을 구하라는 문제였다.
=> 소까지 가는 데 걸리는 최소 시간을 bfs로 구해보자 라는 문제와 같다고 이해하면 됐다.
뭐 구하는 거 까지는 나름 쉬웠다.
그런데 visual studio에서는 답이 나오는데, gcc에서는 답이 나오지 않았다???
흠. 내가 한 가지 놓친 점이 있었는데,
현재 위치에서 * 2를 하는데, 배열의 범위는 10만개 까지 밖에 선언을 안 해놨던 것이다.
99999 * 2는 내가 선언 해 놓은 배열의 범위를 이미 넘어서서 접근하는 것인데,
비쥬얼 스튜디오는 이러한 예외를 인정하고 직접 접근하여 값을 갱신하는 것만 아니면 별 문제없이
답을 구해줬는데, gcc는 그렇지가 않았다.
**느낀점 : 배열의 탐색 범위만큼 배열을 선언해놔야 한다. 때로는 문제의 범위를 넘어서 탐색 할 수 있다는 점을 명심해야 겠다.
'알고리즘문제풀이' 카테고리의 다른 글
더블릿_색종이 만들기 (0) | 2015.04.21 |
---|---|
더블릿_축사보안장치 (0) | 2015.04.21 |
더블릿_선분상의 점 (0) | 2015.04.20 |
더블릿_승리확률 (0) | 2015.04.18 |
더블릿_좌우대칭산모양 (0) | 2015.04.18 |