본문 바로가기

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

[백준] 5427번: 불 (C++ 풀이)

문제

https://www.acmicpc.net/problem/5427

 

풀이

1. bfs로 불을 먼저 퍼뜨린다. 불 배열에 불이 이동한 시간이 저장된다.

2. bfs로 사람을 이동시키는데, 이때 불의 이동시간보다 적을 경우에만 사람을 이동시킨다.

(사람의 이동시간이 불의 이동시간보다 같거나 크면 사람이 이동할 수 없다.)

***여기서 내가 틀린 이유가 있다. 불이 나지 않았을 경우, 불의 이동시간은 모두 0이므로 사람의 이동시간이 더 커지게 되는데

불의 이동시간이 0일 때는 불이 오지 않은 것이므로 사람을 이동시킬 수 있도록 하였다.***

3. 사람의 이동 좌표가 경계값이 되면 이동 시간을 리턴하고, 큐를 다 돌고나면 -1을 리턴하여 값에 따라 알맞은 출력을 하도록 한다.

 

코드

https://www.acmicpc.net/source/12052310

 

결과