본문 바로가기

leetcode

[leetcode] 13. Roman to Integer (easy)

class Solution:
    def romanToInt(self, s: str) -> int:
        dict = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
        
        ans = 0
        size = len(s)
        for i in range(size):
            if i < (size-1) and dict[s[i]] < dict[s[i+1]]:
                ans = ans - dict[s[i]]
            else:
                ans = ans + dict[s[i]]
        
        return ans

[문제]

로마자로 들어오는 것을 숫자로 변환하고, 규칙에 맞게 계산하기

Symbol Value --> I 1, V 5, X 10, L 50, C 100, D 500, M 1000

 

[풀이]

4, 9, 40, 90, 400, 900 에 대한 처리가 중요함

스트링 길이만큼 루프를 돌면서, 현재 로마자가 다음 로마자보다 작은지 비교하고,

작으면 현재 로마자를 뺌

크면 현재 로마자를 더함