
[LeetCode] 12. Integer to Roman


class Solution:
def intToRoman(self, num: int) -> str:
if not (1 <= num <= 3999):
raise ValueError("Input must be in 1..3999")
vals = [
(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"),
]
res = []
for v, sym in vals:
if num == 0:
break
q, num = divmod(num, v)
res.append(sym * q)
return "".join(res)