diff --git "a/LiiNi-coder/202509/22 BOJ 1\353\241\234 \353\247\214\353\223\244\352\270\2602.md" "b/LiiNi-coder/202509/22 BOJ 1\353\241\234 \353\247\214\353\223\244\352\270\2602.md" new file mode 100644 index 00000000..8e0fe0a1 --- /dev/null +++ "b/LiiNi-coder/202509/22 BOJ 1\353\241\234 \353\247\214\353\223\244\352\270\2602.md" @@ -0,0 +1,43 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int n = Integer.parseInt(br.readLine()); + int[] dp = new int[n + 1]; + int[] before = new int[n + 1]; //이전 경로 + + dp[1] = 0; + for (int i = 2; i <= n; i++) { + // 1뻄 + dp[i] = dp[i - 1] + 1; + before[i] = i - 1; + // 2로 나눔 + if (i % 2 == 0&& dp[i] > dp[i / 2] + 1) { + dp[i] = dp[i / 2] + 1; + before[i] = i / 2; + } + // 3으로 나눔 + if (i % 3 == 0 && dp[i] > dp[i / 3] + 1) { + dp[i] = dp[i / 3] + 1; + before[i] = i / 3; + } + } + + StringBuilder sb = new StringBuilder(); + sb.append(dp[n]).append("\n"); + + int cur = n; + while (cur > 0) { + sb.append(cur).append(" "); + if (cur == 1) + break; + cur = before[cur]; + } + System.out.println(sb); + } +} + +```