문제
풀이
고슴도치가 몰려오는 물을 피해 목적지를 달성한다는 점에서 불 문제와 비슷하다. [백준] 5427번: 불 ☜풀이 가기
1. bfs로 물을 먼저 이동시켰다. 물이 이동한 시간을 배열에 따로 저장해놓는다.
'.'이랑 'S'가 있는 곳만 이동할 수 있도록 했다.
2. 물을 다 이동시킨 후, bfs로 고슴도치를 이동시켰다. 마찬가지로 고슴도치의 이동시간을 다른 배열에 따로 저장해놓는다. '.'과 'D'가 있는 곳으로 이동시킬 수 있는데, 이때 '.'일 경우, 물 보다 먼저 도달하는지 체크해야한다. 즉, 물이 왔다간 시간보다 고슴도치가 왔다가는 시간이 작아야 하거나 물이 왔다간 적이 없어야 한다.
3. 입력받을 때, 'D'의 좌표를 따로 저장해놓은 다음에 출력할때 고슴도치 배열의 해당 좌표 값이 -1이면 탈출하지 못한것이고, -1이 아니라 어떤 값이면 그 시간에 탈출한 것이다!
코드
결과
'알고리즘 문제풀이 > 알고리즘 C++ 풀이' 카테고리의 다른 글
[백준] 17070번: 파이프 옮기기1 (C++ 풀이) (0) | 2019.03.28 |
---|---|
[백준] 11403번: 경로 찾기 (C++ 풀이) (0) | 2019.03.27 |
[백준] 13913번: 숨바꼭질4 (C++ 풀이) (0) | 2019.03.25 |
[백준] 13549번: 숨바꼭질3 (C++ 풀이) (0) | 2019.03.25 |
[백준] 12851번: 숨바꼭질2 (C++ 풀이) (0) | 2019.03.25 |