前回(大学入学共通テスト「情報」の試作問題について)の続きです。
試作問題『情報Ⅰ』の問3に出てくるコードを JavaScript で書いてみました。
「金額を渡すと、最小交換硬貨枚数が返ってくる」プログラムです。
「枚数(金額)
」という関数名は、「numOfCoins(kingaku)
」に変えてあります。
function numOfCoins(kingaku) {
const kouka = [1, 5, 10, 50, 100];
let maisu = 0;
let nokori = kingaku;
for (let i=kouka.length-1; i >= 0; i -= 1) {
maisu += Math.floor(nokori / kouka[i]);
nokori %= kouka[i];
}
return maisu;
}
function main(kingaku) {
let min_maisu = 100;
let maisu = 0;
let shiharai;
for (let tsuri = 0; tsuri <= 99; tsuri += 1) {
shiharai = kingaku + tsuri;
maisu = numOfCoins(shiharai) + numOfCoins(tsuri);
if (maisu < min_maisu) {
min_maisu = maisu;
}
}
return min_maisu;
}
console.log(main(46));
これを、例えば Online JavaScript Compiler (Editor) [1]に貼り付けて [Run] ボタンを押すと実行できます。
main(kakaku)
という関数に金額を渡すと、「最小交換硬貨枚数」が返ってくるので、それを表示しているだけのプログラムになります。
こうしてみると、「最小交換硬貨枚数」だけ分かってもあまり嬉しくないですね。できれば、「最小交換硬貨枚数」のときの「支払い金額」「支払い金額はどの硬貨が何枚か?」「お釣り金額」「お釣り金額はどの硬貨が何枚か?」も知りたいです。また、入力である「金額」と出力である「最小交換硬貨枚数」のグラフを書いてみるのも面白そうだと思いました。
[1] もちろん、他の「JavaScriptコードを書いて実行できるオンラインサービス」でもよいです。
参考