IT 이것저것

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

관성맨 2023. 3. 26. 19:23
반응형

 

오늘은 리트코드(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를 더해주어야 한다는 것입니다.

반응형