본문 바로가기

알고리즘(アルゴリズム)/자주 까먹는 알고리즘(よく忘れるアルゴリズム)

0-1 BFS

특징

1. 가중치가 0과 1로만 이루어 져 있을 때에만 사용이 가능

2. 일반적인 큐가 아닌 데큐(Deque)를 사용해야 한다. 

 

알고리즘의 핵심 포인트

1. 가중치 그래프이므로, 기존의 BFS로 최단 경로를 구할 때와 같이 [깊이]가 아닌, [가중치의 최소합]이 최단 경로의 길이가 된다. 

2. 위 1의 [가중치의 최소합]을 구하기 위하여, 

a) 가중치의 합이 0인 경로...

b) 가중치의 합이 1인 경로..

c) 가중치의 합이 2인 경로..

-> 가중치의 합이 0인 경로부터 시작하여 , +1씩하여 1인 경로를 탐색한다. 

3. 데큐(Deque)로부터 removeFirst()를 한 노드가 target 노드이면 알고리즘 종료!

아래의 문제를 기준으로, 그림을 그려보았다. 

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

 

13549번: 숨바꼭질 3

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net