👋

13. Roman to Integer

2025/03/10に公開
ローマ数字は7つの異なる記号で表されます:I、V、X、L、C、D、M。

| 記号 | 値 |
|------|----|
| I    | 1  |
| V    | 5  |
| X    | 10 |
| L    | 50 |
| C    | 100|
| D    | 500|
| M    | 1000|

例えば:
- 数字 2 はローマ数字で II と書きます。これは「1」が2つ足されたものです。
- 数字 12 は XII と書きます。これは X (10) + II (2) の合計です。
- 数字 27 は XXVII と書きます。これは XX (20) + V (5) + II (2) の合計です。
  
ローマ数字は通常、大きい数字から小さい数字の順に左から右へ書かれます。しかし、4 の場合は IIII ではなく IV と書きます。これは「1 (I)」が「5 (V)」の前にあるため、5から1を引いて4になります。同じルールが9 (IX) にも適用されます。

減算が使われる主な6つのパターン:
- I は V (5) や X (10) の前に置かれて 4 または 9 を表します。
- X は L (50) や C (100) の前に置かれて 40 または 90 を表します。
- C は D (500) や M (1000) の前に置かれて 400 または 900 を表します。
---
ローマ数字を整数に変換する

例1
入力: s = "III"
出力: 3
説明: III = 3

例2
入力: s = "LVIII"
出力: 58
説明: L = 50, V = 5, III = 3

例3
入力: s = "MCMXCIV"
出力: 1994

説明:
- M = 1000
- CM = 900
- XC = 90
- IV = 4

・減算処理の条件は「現在の値 < 次の値」で判断。
・次の文字がない場合は $next を 0 として扱うことで安全に処理。
・計算結果は $sum に格納し、最終的に返却。

Discussion