문제
https://www.acmicpc.net/problem/5427
풀이
1. bfs로 불을 먼저 퍼뜨린다. 불 배열에 불이 이동한 시간이 저장된다.
2. bfs로 사람을 이동시키는데, 이때 불의 이동시간보다 적을 경우에만 사람을 이동시킨다.
(사람의 이동시간이 불의 이동시간보다 같거나 크면 사람이 이동할 수 없다.)
***여기서 내가 틀린 이유가 있다. 불이 나지 않았을 경우, 불의 이동시간은 모두 0이므로 사람의 이동시간이 더 커지게 되는데
불의 이동시간이 0일 때는 불이 오지 않은 것이므로 사람을 이동시킬 수 있도록 하였다.***
3. 사람의 이동 좌표가 경계값이 되면 이동 시간을 리턴하고, 큐를 다 돌고나면 -1을 리턴하여 값에 따라 알맞은 출력을 하도록 한다.
코드
https://www.acmicpc.net/source/12052310
결과
'알고리즘 문제풀이 > 알고리즘 C++ 풀이' 카테고리의 다른 글
[백준] 5014번: 스타트링크 (C++ 풀이) (0) | 2019.03.07 |
---|---|
[백준] 10093번: 숫자 (C++ 풀이) (0) | 2019.03.06 |
[백준] 2573번: 빙산 (C++ 풀이) (0) | 2019.03.03 |
[백준] 2468번: 안전 영역 (C++ 풀이) (0) | 2019.03.03 |
[백준] 10026번: 적록색약 (C++ 풀이) (0) | 2019.03.02 |