
μ μ Xμ μ¬μ©ν μ μλ μ°μ°μ λ€μκ³Ό κ°μ΄ μΈ κ°μ§ μ΄λ€.
1. Xκ° 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ©΄, 3μΌλ‘ λλλ€.
2. Xκ° 2λ‘ λλμ΄ λ¨μ΄μ§λ©΄, 2λ‘ λλλ€.
3. 1μ λΊλ€.
μ μ Nμ΄ μ£Όμ΄μ‘μ λ, μμ κ°μ μ°μ° μΈ κ°λ₯Ό μ μ ν μ¬μ©ν΄μ 1μ λ§λ€λ €κ³ νλ€. μ°μ°μ μ¬μ©νλ νμμ μ΅μκ°μ μΆλ ₯νμμ€.
첫째 μ€μ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 10^6λ³΄λ€ μκ±°λ κ°μ μ μ Nμ΄ μ£Όμ΄μ§λ€.
첫째 μ€μ μ°μ°μ νλ νμμ μ΅μκ°μ μΆλ ₯νλ€.
2
1
10
3
β μ΄μ μ ꡬνλ κ°λ€μ λ°°μ΄μ κ³μ μ μ₯ν¨μΌλ‘μ¨ κ΅¬νλ κ°λ€μ +1μ νλ λ°©μμΌλ‘ ꡬνλ€.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", function (line) {
const num = Number(line); // λ°°μ΄ ν¬κΈ°λ₯Ό λ§λ€κΈ° μν΄ μ
λ ₯ λ°μ κ° μ«μλ‘ νλ³ν
const arr = new Array(num + 1).fill(0); // μ
λ ₯λ°μ ν¬κΈ°λ§νΌ λ°°μ΄ κ³΅κ° λ§λ€κ³ 0μΌλ‘ μ΄κΈ°ν
for (let i = 2; i <= num; i++) {
arr[i] = arr[i - 1] + 1; // arr[2]μ 1λμ
if (i % 2 === 0) {
// iκ° 2λ‘ λλμ΄ λ¨μ΄μ§λ©΄
arr[i] = Math.min(arr[i], arr[i / 2] + 1); // μμμ λμ
ν 1(arr[i])κ³Ό 0(arr[2/2]+1)μ λΉκ΅ν΄μ μμ κ°μ arr[2]μ λμ
}
if (i % 3 === 0) {
// iκ° 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ©΄
arr[i] = Math.min(arr[i], arr[i / 3] + 1); // μμ μ½λμ λ§μ°¬κ°μ§ (3μΌλ‘ λλμ΄μ‘λ κ³Όκ±° μ«μλ€μ μ°ΎμμΌλλ―λ‘ i/3)
}
}
console.log(arr[num]);
}).on("close", function () {
process.exit();
});