[LeetCode] 13. Roman to Integer

원숭2·2022년 1월 14일
0

LeetCode

목록 보기
3/51

문제

풀이

  1. popleft 기능을 사용하기 위해 주어진 s를 deque로 변환 후 사용
  2. 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]

0개의 댓글