입력으로 들어오는 정수 X에 대해 가능한 연산들은 아래와 같다. (1 <= X <= 10^6)
연산을 활용해 주어진 정수 X를 1로 만들 수 있는 최소 횟수는?
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const solution = () => {
let dp = [0, 0];
const X = input();
run(2);
console.log(dp[X]);
function run(n) {
while (n <= 1000000) {
if (n % 3 == 0) {
dp[n] = dp[n / 3] + 1;
}
if (n % 2 == 0) {
if (!dp[n]) dp[n] = dp[n / 2] + 1;
dp[n] = Math.min(dp[n], dp[n / 2] + 1);
}
if (!dp[n]) dp[n] = dp[n - 1] + 1;
dp[n] = Math.min(dp[n], dp[n - 1] + 1);
n++;
}
}
};
let line = 0;
const input = () => stdin[line++];
let stdin = [];
rl.on("line", function (line) {
stdin.push(line);
}).on("close", function () {
solution();
process.exit();
});