그래프가 아닌 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
Posted by slender ankles
,