반응형
오늘은 리트코드(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를 더해주어야 한다는 것입니다.
반응형
'IT 이것저것' 카테고리의 다른 글
구글 검색 결과를 새 브라우저(새 창, 새 탭)로 여는 2가지 방법 (3) | 2023.03.26 |
---|---|
[알고리즘] LeetCode/14. Longest Common Prefix/python 솔루션 (3) | 2023.02.27 |
[컴퓨터] 한글영어 전환 안될 때 (1) | 2023.02.18 |
[오라클] CONNECT BY 계층형쿼리 사용법 (5) | 2023.02.11 |
[네트워크] 엣지컴퓨팅(Edge Computing)이란 무엇인가? (3) | 2023.02.10 |
댓글