diff --git "a/JHLEE325/202507/24 BOJ G4 \354\210\250\353\260\224\352\274\255\354\247\210 4.md" "b/JHLEE325/202507/24 BOJ G4 \354\210\250\353\260\224\352\274\255\354\247\210 4.md" new file mode 100644 index 00000000..1cca7129 --- /dev/null +++ "b/JHLEE325/202507/24 BOJ G4 \354\210\250\353\260\224\352\274\255\354\247\210 4.md" @@ -0,0 +1,64 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + static int MAX = 100001; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int n = Integer.parseInt(st.nextToken()); + int k = Integer.parseInt(st.nextToken()); + + int[] dist = new int[MAX]; + int[] prev = new int[MAX]; + + Arrays.fill(dist, -1); + + Queue q = new LinkedList<>(); + q.offer(n); + dist[n] = 0; + + while (!q.isEmpty()) { + int now = q.poll(); + + for (int i = 0; i < 3; i++) { + int next = 0; + switch (i) { + case 0: + next = now - 1; + break; + case 1: + next = now + 1; + break; + case 2: + next = now * 2; + break; + } + + if (next >= 0 && next < MAX && dist[next] == -1) { + dist[next] = dist[now] + 1; + prev[next] = now; + q.offer(next); + } + } + + } + + System.out.println(dist[k]); + + Stack path = new Stack<>(); + for (int i = k; i != n; i = prev[i]) { + path.push(i); + } + path.push(n); + + while (!path.isEmpty()) { + System.out.print(path.pop() + " "); + } + } +} + +```