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를 더해주어야 한다는 것입니다.
반응형