この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
133. 整数をローマ数字に変換する
解法:
整数をローマ数字に変換するには、次の手順に従います。
- テーブルから最大のローマ数字で数値を減算します
- できるだけ大きい数字で削減できるだけシステムに加えます
- 1 - 2を繰り返します。
以下は、このアプローチを実装する方法です。
function integerToRoman(num) {
const romanToIntMap = new Map([
[1000, 'M'],
[900, 'CM'],
[500, 'D'],
[400, 'CD'],
[100, 'C'],
[90, 'XC'],
[50, 'L'],
[40, 'XL'],
[10, 'X'],
[9, 'IX'],
[5, 'V'],
[4, 'IV'],
[1, 'I']
]);
let result = '';
for (let [intVal, romanVal] of romanToIntMap) {
while (num >= intVal) {
result += romanVal;
num -= intVal;
}
}
return result;
}
ローマ数字の対応は Map
で表現され、ループを使って先頭から大きい順にループします。与えられたループ値が現在値より大きくなるまで、そのループ値を結果に追加し、現在値から引きます。これにより、テーブルからできるだけ最も大きな数字を取り除くことができます。必要に応じて、結果文字列を返します。
この関数を次のようにテストできます。
console.log(integerToRoman(123)); // 'CXXIII'
console.log(integerToRoman(1999)); // 'MCMXCIX'
console.log(integerToRoman(3420)); // 'MMMCDXX'
これで与えられたテストケースが正常に動作するはずです。