最安値を達成するには 1 (paizaランク B 相当)
解答例
問題文に沿って実装します。
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
const [n, a, b] = lines[0].split(" ").map(Number);
const dp = Array(n + 1).fill(0);
dp[0] = 0;//りんご0個、0円
dp[1] = a;//りんご1個はa円のみ
//りんご2個以降
for (let i = 2; i <= n; i++) {
//i個買う時の最小金額=小さい方(i-1個の最小金額+りんご1個の金額、i-2個の最小金額+りんご2個の金額)
dp[i] = Math.min(dp[i - 1] + a, dp[i - 2] + b);
}
console.log(dp[n]);