Skip to content

Commit 7d30b69

Browse files
authored
[20250724] BOJ / G4 / 숨바꼭질 4 / 이준희
1 parent 9ed94cc commit 7d30b69

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
static int MAX = 100001;
7+
8+
public static void main(String[] args) throws Exception {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringTokenizer st = new StringTokenizer(br.readLine());
11+
12+
int n = Integer.parseInt(st.nextToken());
13+
int k = Integer.parseInt(st.nextToken());
14+
15+
int[] dist = new int[MAX];
16+
int[] prev = new int[MAX];
17+
18+
Arrays.fill(dist, -1);
19+
20+
Queue<Integer> q = new LinkedList<>();
21+
q.offer(n);
22+
dist[n] = 0;
23+
24+
while (!q.isEmpty()) {
25+
int now = q.poll();
26+
27+
for (int i = 0; i < 3; i++) {
28+
int next = 0;
29+
switch (i) {
30+
case 0:
31+
next = now - 1;
32+
break;
33+
case 1:
34+
next = now + 1;
35+
break;
36+
case 2:
37+
next = now * 2;
38+
break;
39+
}
40+
41+
if (next >= 0 && next < MAX && dist[next] == -1) {
42+
dist[next] = dist[now] + 1;
43+
prev[next] = now;
44+
q.offer(next);
45+
}
46+
}
47+
48+
}
49+
50+
System.out.println(dist[k]);
51+
52+
Stack<Integer> path = new Stack<>();
53+
for (int i = k; i != n; i = prev[i]) {
54+
path.push(i);
55+
}
56+
path.push(n);
57+
58+
while (!path.isEmpty()) {
59+
System.out.print(path.pop() + " ");
60+
}
61+
}
62+
}
63+
64+
```

0 commit comments

Comments
 (0)