Skip to content

Commit 246bd05

Browse files
authored
Merge pull request #59 from solid-connection/whqtker
[Week08] BOJ 13549: 숨바꼭질 3
2 parents 36c4978 + aabb54d commit 246bd05

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package boj.boj_13549;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.ArrayDeque;
7+
import java.util.Queue;
8+
import java.util.StringTokenizer;
9+
10+
public class Main {
11+
12+
static final int LIMIT = 1000001;
13+
14+
public static void main(String[] args) throws IOException {
15+
// 위치를 노드, 걸린 시간을 간선으로 간주하면 BFS로 풀 수 있다. 최간 시간을 구하는 것이기 때문.
16+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
17+
StringBuilder sb = new StringBuilder();
18+
19+
int n, k;
20+
String line = br.readLine();
21+
StringTokenizer st = new StringTokenizer(line);
22+
n = Integer.parseInt(st.nextToken());
23+
k = Integer.parseInt(st.nextToken());
24+
25+
int[] visited = new int[LIMIT];
26+
Queue<Integer> q = new ArrayDeque<>();
27+
visited[n] = 1;
28+
q.offer(n);
29+
30+
while (!q.isEmpty()) {
31+
int x = q.poll();
32+
33+
if (x == k) break;
34+
35+
if (2 * x < LIMIT && visited[2 * x] == 0) {
36+
visited[2 * x] = visited[x];
37+
q.offer(2 * x);
38+
}
39+
40+
if (x - 1 >= 0 && visited[x - 1] == 0) {
41+
visited[x - 1] = visited[x] + 1;
42+
q.offer(x - 1);
43+
}
44+
45+
if (x + 1 < LIMIT && visited[x + 1] == 0) {
46+
visited[x + 1] = visited[x] + 1;
47+
q.offer(x + 1);
48+
}
49+
}
50+
51+
sb.append(visited[k] - 1);
52+
System.out.println(sb);
53+
}
54+
}

0 commit comments

Comments
 (0)