•
•
문제 설명 : 그리스 숫자를 int형 숫자로 변경
•
풀이 방법
◦
IV 와 같은 경우만 제외하면, 나머지는 그냥 해시테이블을 통해 값을 얻어오면서 더해주면 된다.
▪
다만 IV 와 같은 문자는 왼쪽에 여러 문자가 붙을 수 있기 때문에, 오른쪽 → 왼쪽으로 탐색하며 처리하는게 좋을 것 같았다.
•
시간복잡도 :
•
성공 코드
class Solution:
def romanToInt(self, s: str) -> int:
roman_numerals_info = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
stack = list(s)
result = 0
while stack:
# IV 와 같은 숫자를 표현하기 위해서는, 오른쪽 -> 왼쪽 방향으로 읽어야한다.
# VI 숫자는 그냥 5 + 1로 더하면 되지만, IV는 I와 V를 비교한 후 5 + 1이 아닌 5 - 1로 할 수도 있기 때문이다.
ch = stack.pop()
result += roman_numerals_info[ch]
# 만약 현재 문자의 왼쪽에 붙어있는 문자들이 더 낮은 숫자를 의미할 경우, 빼준다.
while stack and roman_numerals_info[ch] > roman_numerals_info[stack[-1]]:
small_num = stack.pop()
result -= roman_numerals_info[small_num]
return result
Python
복사