본문 바로가기

알고리즘 문제풀이/알고리즘 C++ 풀이

[백준] 3055번: 탈출 (C++ 풀이)

문제

풀이

고슴도치가 몰려오는 물을 피해 목적지를 달성한다는 점에서 불 문제와 비슷하다. [백준] 5427번: 불 ☜풀이 가기

1. bfs로 물을 먼저 이동시켰다. 물이 이동한 시간을 배열에 따로 저장해놓는다.

'.'이랑 'S'가 있는 곳만 이동할 수 있도록 했다.

2. 물을 다 이동시킨 후, bfs로 고슴도치를 이동시켰다. 마찬가지로 고슴도치의 이동시간을 다른 배열에 따로 저장해놓는다. '.'과 'D'가 있는 곳으로 이동시킬 수 있는데, 이때 '.'일 경우, 물 보다 먼저 도달하는지 체크해야한다. 즉, 물이 왔다간 시간보다 고슴도치가 왔다가는 시간이 작아야 하거나 물이 왔다간 적이 없어야 한다.

3. 입력받을 때, 'D'의 좌표를 따로 저장해놓은 다음에 출력할때 고슴도치 배열의 해당 좌표 값이 -1이면 탈출하지 못한것이고, -1이 아니라 어떤 값이면 그 시간에 탈출한 것이다!

코드

결과

한번에 맞추는 연습을 시작했다