[BOJ3055] 탈출
Updated:
고슴도치가 굴로 들어가기 위한 최소 시간
- 지도 R * C
- 빈 공간 ‘.’ / 물 ‘*’ / 돌 ‘X’ / 비버 굴 ‘D’ / 고슴도치 ’S’
- 매 분마다 고슴도치는 현재 있는 칸과 인접한 네 칸 중 하나로 이동 가능
- 물은 사방으로 확장
- 고슴도치와 물은 돌은 통과 못 함
- 고슴도치는 물 못 감
- 물은 고슴도치 굴 못 감
- 숲지도 주어졌을 때, 고슴도치가 굴로 이동하기 위한 최소 시간
- 고슴도치는 물이 찰 예정인 칸으로 못 감
입력
- 첫째 줄 R, C (<= 50)
- 다음 R개 줄에 지도
출력
- 고슴도치가 굴로 이동하는 가장 빠른 시간 출력
- 안 된다면 “KAKTUS” 출력
설계
- 홍수 / 고슴도치 BFS 두 개 사용
- 큰 틀은 고슴도치 큐를 이용해서 계속 반복
- 큰 틀 안에 홍수 큐 사이즈만큼 반복, 고슴도치 큐 사이즈만큼 반복
- 고슴도치는 맵에서 하나씩 옮기기보다 홍수처럼 사방으로 퍼뜨리는 방식으로해도 결과 성립
- 맵의 특정 값이 ‘.’일 때에만 홍수, 고슴도치 움직이도록
- ‘D’ 만나면 종료 후 퍼진 날짜 출력, 못 만나면 ‘KAKTUS’ 출력
How I solved(click to github)
ref :
BOJ3055
Leave a comment