반응형
문제
풀이
BFS를 활용해야 하는 문제입니다.
주어진 맵 정보에 대하여 매 시간별 물이 차오르는 정보를 업데이트 해주어야 하고, 고슴도치는 한 칸씩 이동할 수 있습니다.
따라서 저는 먼저 fire() 함수를 통해 물이 차오르는 범위를 업데이트를 해준 뒤,
bfs 함수로 고슴도치가 한 칸씩 이동할 수 있도록 해주었습니다.
※ 주의할 점 하나는 물이 차오른 뒤에 고슴도치를 이동시켜야 정상적으로 이동할 수 있기 때문에
bfs 함수 실행 전 fire 함수를 먼저 실행해주었습니다.
※ 주의할 점 두 번째로는 고슴도치가 비버의 굴로 이동할 수 없는 경우도 발생하기 때문에
이동하지 못하는 경우와 이동할 수 있는 경우를 위해 flag 변수를 활용하였습니다.
while문의 조건으로 1. 아직 도달하지 못했을 때 ( ! flag ) 와
bq가 비었을 때 ( !bq.isEmpty( ) )를 줘서 도달한 경우 ( flag == true ) 정상 종료하도록 하였고
모두 진행하였지만 도달하지 못한 경우 ( bq,isEmpty( ) ) 모두 종료할 수 있도록 해주었습니다.
코드
출처
https://www.acmicpc.net/problem/3055
반응형
'알고리즘 연습' 카테고리의 다른 글
[SWEA] 1938. 아주 간단한 계산기 문제풀이 JAVA (0) | 2019.10.09 |
---|---|
[SWEA] 2029. 몫과 나머지 출력하기 JAVA (0) | 2019.10.09 |
[SWEA] 1219. 길 찾기 _ JAVA (0) | 2019.10.08 |
[ 그래프 ] BFS 연습하기 JAVA (0) | 2019.10.07 |
[ 그래프 ] DFS 연습하기 JAVA (0) | 2019.10.07 |