14631にする👊
7204 ワード
質問する
整数Xに使用できる演算は3種類あります.
1.Xを3で割って、3で割った.
2.Xを2で割り、2で割ります.
1を減らす.
整数Nが与えられると、上記3つの演算を適宜用いて1が作成される.使用演算回数の最大値を出力してください.
入力
第1行は、1以上、10^6以下の整数Nを与える.
しゅつりょく
1行目の演算回数の最大値を出力します.
入力例1
2
サンプル出力1
1
入力例2
10
サンプル出力2
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();
});
Reference
この問題について(14631にする👊), 我々は、より多くの情報をここで見つけました https://velog.io/@veloger_97/1463-1로만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol