From 04a1a38115df5824910ad7092a9f8501d52a50c9 Mon Sep 17 00:00:00 2001 From: jiminnimij <124450012+jiminnimij@users.noreply.github.com> Date: Wed, 31 Dec 2025 08:46:16 +0900 Subject: [PATCH] =?UTF-8?q?[1231]=2013913=EB=B2=88=20-=20=EC=88=A8?= =?UTF-8?q?=EB=B0=94=EA=BC=AD=EC=A7=88=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Problem13913.java | 76 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/Problem13913.java diff --git a/src/Problem13913.java b/src/Problem13913.java new file mode 100644 index 0000000..0e7f2b2 --- /dev/null +++ b/src/Problem13913.java @@ -0,0 +1,76 @@ +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.util.Arrays; +import java.util.StringTokenizer; +import java.util.Queue; +import java.util.LinkedList; +import java.util.Stack; +import java.lang.StringBuilder; + +public class Problem13913 { + static final int MAX = 100000; + static int[] before = new int[MAX + 1]; + static int[] count = new int[MAX + 1]; + static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + + public static void main(String[] args) throws IOException{ + StringTokenizer st = new StringTokenizer(br.readLine()); + + int n = Integer.parseInt(st.nextToken()); + int k = Integer.parseInt(st.nextToken()); + + Arrays.fill(count, MAX+1); + Arrays.fill(before, 0); + + Queue queue = new LinkedList<>(); + queue.add(n); + + before[n] = -1; + count[n] = 0; + + while(!queue.isEmpty()){ + int cur = queue.poll(); + + if (cur == k) { + writePath(n, k); + return; + } + + int[] nextPositions = {cur - 1, cur + 1, cur * 2}; + + for (int next : nextPositions) { + if (next >= 0 && next <= MAX && count[next] > count[cur] + 1) { + before[next] = cur; + count[next] = count[cur] + 1; + queue.add(next); + } + } + } + + } + + public static void writePath(int n, int k) throws IOException { + Stack stack = new Stack<>(); + int index = k; + while (index != n) { + stack.push(index); + index = before[index]; + } + + stack.push(n); + + StringBuilder sb = new StringBuilder(); + sb.append(count[k]).append("\n"); + while (!stack.isEmpty()) { + sb.append(stack.pop()).append(" "); + } + bw.write(sb.toString()); + bw.flush(); + bw.close(); + } +} \ No newline at end of file