- popleft 기능을 사용하기 위해 주어진 s를 deque로 변환 후 사용
- s가 빌때까지 while 문을 돌면서 s를 빼주고, s에 해당하는 값을 fin에 합
(다만, 문제에서 주어진 IV, IX, XL, XC, CD, CM 같은 경우를 반드시 확인)
from collections import deque
class Solution:
def romanToInt(self, s: str) -> int :
table = {"I" : 1, "V" : 5, "X" : 10, "L" : 50, "C" : 100, "D" : 500, "M" : 1000}
fin = 0
if len(s) >= 2 :
s = deque(list(s))
while len(s) != 0 :
if s[0] == 'I' :
if len(s) > 1 :
if s[1] == 'V' :
fin += 4
s.popleft()
s.popleft()
elif s[1] == 'X' :
fin += 9
s.popleft()
s.popleft()
else :
fin += table[s[0]]
s.popleft()
else :
fin += table[s[0]]
s.popleft()
elif s[0] == 'X' :
if len(s) > 1 :
if s[1] == 'L' :
fin += 40
s.popleft()
s.popleft()
elif s[1] == 'C' :
fin += 90
s.popleft()
s.popleft()
else :
fin += table[s[0]]
s.popleft()
else :
fin += table[s[0]]
s.popleft()
elif s[0] == 'C' :
if len(s) > 1 :
if s[1] == 'D' :
fin += 400
s.popleft()
s.popleft()
elif s[1] == 'M' :
fin += 900
s.popleft()
s.popleft()
else :
fin += table[s[0]]
s.popleft()
else :
fin += table[s[0]]
s.popleft()
else :
fin += table[s[0]]
s.popleft()
return fin
else :
return table[s]