728x90
1.문제
https://leetcode.com/problems/roman-to-integer
2.풀이
dictionary를 이용하여 푸는 문제. 모든 경우의 수를 조합하여 미리 dict 를 만들어도 되고, 주어진 문자열에 대한 값만 dict 로 만들어도된다.
[다른사람 풀이]
class Solution:
def romanToInt(self, s: str) -> int:
roman = {
"I": 1, "V": 5, "X": 10,
"L": 50, "C": 100, "D": 500, "M": 1000
}
res = 0
for i in range(len(s)):
if i + 1 < len(s) and roman[s[i]] < roman[s[i + 1]]:
res -= roman[s[i]]
else:
res += roman[s[i]]
return res
3.코드
class Solution:
def romanToInt(self, s: str) -> int:
res = 0
i = 0
d = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
while i < len(s) :
if (i == len(s)-1):
res += d[s[i]]
break
cur = d[s[i]]
nxt = d[s[i+1]]
if (cur < nxt):
res = res + (nxt - cur)
i += 2
else:
res += cur
i += 1
return res
728x90
'코딩 테스트' 카테고리의 다른 글
[LeetCode] 14.Longest Common Prefix (Python) (0) | 2025.01.15 |
---|---|
[LeetCode] Length of Last Word (Python) (0) | 2025.01.15 |
[LeetCode] In Subsequence (Python) (0) | 2025.01.13 |
[프로그래머스] 6주차 - 복서 정렬하기 (C++) (0) | 2021.09.08 |
[프로그래머스] 표 편집 (Python) (0) | 2021.09.08 |
댓글