카테고리: 단순
문제 번호: 13개의
로마 숫자에는 I, V, X, L, C, D 및 M의 7개 문자가 포함됩니다.
문자 값
I 1
V
5 _ _ _ 12는 XII로 표기되며, 이는 X + II입니다. 27은 XXVII로 쓰면 XX+V+II이다.
일반적으로 로마 숫자의 작은 숫자는 큰 숫자의 오른쪽에 있습니다. 하지만 특별한 경우도 있는데, 예를 들어 4는 IIII으로 쓰지 않고 IV로 씁니다. 숫자 1은 숫자 5의 왼쪽에 있으며 큰 숫자 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을 나타낼 수 있습니다.
로마 숫자가 주어지면 이를 정수로 변환합니다.
암호
class Solution:
def romanToInt(self, s: str) -> int:
sum = 0
i = 0
roman_dict ={
'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, 'IV':4, 'IX':9, 'XL':40, 'XC':90, 'CD':400, 'CM':900}
while i < len(s):
if i < len(s) - 1 and roman_dict[s[i]] < roman_dict[s[i + 1]]:
sum += roman_dict[s[i:i+2]]
i += 2
else:
sum += roman_dict[s[i]]
i += 1
return sum