문제 제목 : 숨바꼭질
난이도 : 하
문제 유형 : BFS
추천 풀이 시간 : 30분 (못하면 2배 60분)
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
import java.util.*;
public class Main {
public static int n, k;
public static int MAX = 100001;
public static boolean[] visited = new boolean[MAX];
public static int[] time = new int[MAX];
public static Integer bfs() {
Queue<Integer> queue = new LinkedList<>();
queue.offer(n);
visited[n] = true;
while (!queue.isEmpty()) {
int now = queue.poll();
if (now == k) return time[now];
int next = now - 1;
if (next >= 0 && next < MAX && !visited[next]) {
queue.offer(next);
visited[next] = true;
time[next] = time[now] + 1;
}
next = now + 1;
if (next >= 0 && next < MAX && !visited[next]) {
queue.offer(next);
visited[next] = true;
time[next] = time[now] + 1;
}
next = now * 2;
if (next >= 0 && next < MAX && !visited[next]) {
queue.offer(next);
visited[next] = true;
time[next] = time[now] + 1;
}
}
return -1;
}
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
System.out.println(bfs());
}
}
'Algorithm > BAEKJOON' 카테고리의 다른 글
[알고리즘-DFS,BFS] 유기농 배추 (0) | 2023.01.24 |
---|---|
[알고리즘-DFS,BFS] 바이러스 (0) | 2023.01.24 |
[알고리즘-DFS,BFS] DFS와 BFS (0) | 2023.01.23 |
[알고리즘-DP] 가장 높은 탑 쌓기 (0) | 2023.01.23 |
[알고리즘-DP] 기타리스트 (0) | 2023.01.23 |