본문 바로가기

알고리즘/백준 풀이

[백준 3055] 탈출

문제 출처 : https://www.acmicpc.net/problem/3055


문제 요약


  • 맵에 고슴도치(S)와 비버(D)가 있다.
  • 고슴도치가 비버에게 가야한다 (S -> D)
  • 중간에 돌과 물을 피해서 가야한다. 
  • 돌은 고정되어 있고, 물은 고슴도치가 움직이기전에 먼저 찬다.
  • 물은 비버와 돌을 제외하고 빈 곳에 물을 점점 채운다.
문제 풀이

문제는 고슴도치가 비버에게 가는 최단거리이다. 앞서 다룬 BFS 의 조건과 같다. 
인접한 노드를 향해 가기 때문에 가중치는 1이다.

따라서, BFS 를 사용하여 답을 찾을 수 있다. 이 문제의 특징은 큐(queue)를 두개를 써야한다는 점이다. 

물에 관한 큐, 고슴도치에 관한 큐 

1. 물을 채운다.

--> 2. 고슴도치가 움직인다.

--->>> 2.1 비버를 만나면 끝
--->>> 2.2 갈 곳이 없다면 종료
--->>> 2.3 갈 곳이 있다면 1번 실행.


위와 같은 알고리즘을 while 문을 사용하여 답을 구한다. 



'알고리즘 > 백준 풀이' 카테고리의 다른 글

[백준 2490] 윷놀이  (0) 2018.12.20
[백준 2167] 2차원 배열의 합  (0) 2018.12.19
[백준 1024] 수열의 합  (0) 2018.12.17
[백준 7562] 나이트의 이동  (0) 2018.12.17
[백준 1328] 고층 빌딩  (1) 2018.11.29