森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode]問題解答と解説。12. Integer to Roman [JavaScript]

[leetcode]問題解答と解説。12. Integer to Roman [JavaScript]

皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
時間時間で。
私は私自身ある決意をして今臨んでいます。

では今日のleetCodeをやったことを見てもらいます。

これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。

森田賢二のleetCode
森田賢二のleetCode

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 問題ページ

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しようとしたがうまくできなかった。その後は詰んだ

Integer to Roman見本

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の方法と、進むために減らしていって回すが肝

カテゴリー leetCode