본문 바로가기
IT 이것저것

[알고리즘] Leetcode/13. Roman to Integer (python)

by 관성맨 2023. 3. 26.
반응형

 

오늘은 리트코드(leetcode)의 EASY문제인 13번. Roman to Inter문제를 풀어보도록 하겠습니다.

로마숫자로 표현된 문자열을 숫자로 계산하는 알고리즘을 짜는 문제입니다.

 

해당 문제는 dictionary를 이용하여 데이터를 표현하고 문제를 풀 수 있습니다.

각 symbol마다 value값들이 정해져 있으므로 dictionary로 표현하기 적합합니다.

dic = {'I' : 1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

 

그 후 높은 value를 가진 symbol보다 낮은 value를 가진 symbol이 앞에 오면 그 value는 빼주는 것을 표현해주고, 높은 value대로 차례대로 표현되면 더해주는 식을 아래와 같이 반복문으로 표현해주면 됩니다.

 

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        dic = {'I' : 1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
        sum = 0

        for i in range(0,len(s)-1):
            if dic[s[i]]>=dic[s[i+1]]:
                sum = sum+dic[s[i]]
            else :
                sum = sum-dic[s[i]]
        return sum+dic[s[-1]]

 

여기서 중요한 것은 for문으로 표현했을 때 index를 주의하시고, 마지막 return할 때 문자열 s의 맨 마지막 index를 더해주어야 한다는 것입니다.

반응형

댓글