본문 바로가기
코딩 테스트

[LeetCode] Roman to Integer

by zoodi 2025. 1. 14.
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

댓글