BFS 는 queue 를 이용하여 시작점에서 1 번 이동 가능한 것들을 모두 queue 에 담고 (1 단계)
1 단계에서 이동가능한 (visited or 갈 수 없는 곳 제외) 모든 것들을 queue 에 담고 (2 단계)
2 단계에서 이동가능한 (visitedor 갈 수 없는 곳 제외) 모든 것들을 queue 에 담고 (3 단계)
..
이런 식으로 2 차원 배열에서 최소의 어떤 값을 찾는 방식인데, 이것만 생각하면 도착에 도달하는 단계만 생각하면 되니까 쉬운데,
이 문제는 물이라는 개념때문에 더 복잡해지는 것 같습니다.
샘플입력에 대해서 2 차원 배열이라고 하면
D . *
. . .
. S .
1 분 후에는
D**
. (.) *
(.) S (.)
첫 번째 레벨 queue 에 들어간 것 ()
2 분 후에는
D**
(.) * *
. S *
두 번째 레벨 queue 에 들어간 것 ()
3 분 후에는
(D) **
* * *
. S *
세 번째 레벨 queue 에 들어간 것 () 이고, 도착했으니 답이 3 인듯
아래 부분이 명확하게 안 다가오네요.. 물을 먼저 배열에 채우고 이동할 경로를 찾는 방식이면 될런지.. 음..
=> 고슴도치는 물이 찰 예정인 칸으로 이동할 수 없다. 즉, 다음 시간에 물이 찰 예정인 칸으로 고슴도치는 이동할 수 없다. 이동할 수 있으면 고슴도치가 물에 빠지기 때문이다.
dhedaa 7년 전
이런 문제 풀때 개념이헷갈려서 그러는데요
만약 S와 *이 행동하는 함수를 각각만들어서 프로그램을 돌릴경우
그함수두개는 동시에 돌아가는건가요??
아니면 하나가 돌아가고 그다음함수가 돌아가는건가요??
아니면 프레임한번에 동시에 돌아가는원리인가요??