Python 문제풀이/LeetCode
13. Roman to Integer
hjc_
2022. 8. 16. 04:16
link
"""
- 반복분을 끝까지 돌리기 위해서 s 에 더미 데이터를 넣어주었다. ';' : 0
- CM 은 900 이므로 그냥 900 더하고 1000 빼는 식으로 값을 조정했다.
"""
class Solution:
def romanToInt(self, s: str) -> int:
dict = {
'I':1,
'V':5,
'X':10,
'L':50,
'C':100,
'D':500,
'M':1000,
';':0
}
s += ';'
number = 0
for i in range(len(s)-1) :
if dict[s[i+1]] > dict[s[i]]:
number += dict[s[i+1]] - dict[s[i]]
number -= dict[s[i+1]]
else :
number += dict[s[i]]
return number
## ----------------------------------------------------------------------
## 더 간편한 풀이
"""
- 그럴 필요 없이, CM 은 900 이므로 그냥 -100, +1000 하면 된다. ㅋㅋ
"""
class Solution:
def romanToInt(self, s: str) -> int:
dict = {
'I':1,
'V':5,
'X':10,
'L':50,
'C':100,
'D':500,
'M':1000,
}
number = 0
for i in range(len(s)):
if i + 1 < len(s) and dict[s[i]] < dict[s[i+1]] :
number -= dict[s[i]]
else :
number += dict[s[i]]
return number