[leetcode]問題解答と解説。12. Integer to Roman [JavaScript]
皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
時間時間で。
私は私自身ある決意をして今臨んでいます。
では今日のleetCodeをやったことを見てもらいます。
これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。
12. Integer to Roman ルール
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
翻訳ですみません
たとえば、2はローマ数字でIIと表記され、2つだけが足し合わされます。 12はXIIと書かれていますが、これは単にX+IIです。 番号27は、XX + V+IIであるXXVIIと表記されます。
ローマ数字は通常、左から右に最大から最小に書かれています。 ただし、4の数字はIIIIではありません。 代わりに、4番目の数字はIVと書かれています。 1つは5の前にあるので、それを引いて4にします。 同じ原則が、IXと書かれている9番にも当てはまります。 減算が使用される6つの例があります:
V(5)とX(10)の前に置いて、4と9を作ることができます。
XをL(50)とC(100)の前に配置して、40と90を作成できます。
CをD(500)とM(1000)の前に配置して、400と900を作成できます。
12. Integer to Roman 問題ページ
12. Integer to Roman
my code is time over. not clear.
const symbol = {
1: "I",
1.5: "V",
2: "X",
2.5: "L",
3: "C",
3.5: "D",
4: "M"
}
let result = ""
let init = []
let kurai = 1
let next = num
while(0 < next){
let number = next % 10
init.push(number)
kurai = kurai * 10
next = parseInt(next / 10)
}
const initLength = init.length;
for(let i = 0; i < initLength; i++){
if(initLength === 4){
// some
} else if(initLength === 3){
} else if(initLength === 2){
// some
} else {
// some
}
}
return result
mappingしようとしたがうまくできなかった。その後は詰んだ
function intToRoman(num: number): string {
const list = ['M', 'CM', 'D', 'CD','C','XC','L', 'XL','X','IX','V','IV','I']
const valueList = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
// 2つの関係性を配列で表現する
let result = ''"
while(num !== 0) {
for(let i = 0 ; i < valueList.length ; i++) { // listを辿っていく
if(num >= valueList[i]){
result += list[i]
num -= valueList[i]
break // 一回引いたら、再度while文の条件へ
}
}
}
return result
};
Integer to Romanをやってみて感想
- mappingの方法と、進むために減らしていって回すが肝