본문 바로가기

알고리즘 문제 풀이/LeetCode

13. Roman to Integer

반응형
SMALL

오랜만에 포스팅입니다 !

 

최근 너무 바쁘군요 ㅠㅠ 그렇다고 제가 공부 안하는건 아니고, 포스팅을 할 시간이 없네요 ㅠ

 

그래도 꾸준히 정리를 해나가곤 있습니다. 시간이 있는 날 모두 포스팅을 하도록 하겠습니다 !!


https://leetcode.com/problems/roman-to-integer/

 

Roman to Integer - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

오늘 문제는 Roman to Integer 입니다. 제공되는 문자를 번역하여, Integer로 표현을 해야하는 문제입니다. 쉬워요 되게

이런거 많이 보셨죠?

우선, Symbol들을 전부 dictionary로 만들고, 그 문자에 맞도록 결과에 덧셈을 하면 됩니다만, Edge Case가 존재하죠. 'IV, IX' / 'XL, XC' / 'CD, CM' 이 수들은 '4, 9' / '40, 90' / '400, 900' 입니다.

 

즉, I / X / C 문자를 만나면 그 다음 문자를 체크해서 숫자를 더하면 됩니다.

 

그 다음 문자라 하면 index + 1이겠죠.

 

근데 만약 문자열 마지막에서 다음 문자를 확인하려고 하면 index 에러가 뜨겠죠?

 

이 경우도 체크를 해줘서, 에러가 뜨지 않도록 만들어주었습니다.

 

코드 갑니다잉

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}
        idx = 0
        result = 0
        while idx < len(s):
            if s[idx] == 'I' or s[idx] == 'X' or s[idx] == 'C':
                if s[idx] == 'I':
                    if idx + 1 < len(s) and s[idx + 1] == 'V':
                        result += 4
                        idx += 1
                    elif idx + 1 < len(s) and s[idx + 1] == 'X':
                        result += 9
                        idx += 1
                    else:
                        result += 1
                elif s[idx] == 'X':
                    if idx + 1 < len(s) and s[idx + 1] == 'L':
                        result += 40
                        idx += 1
                    elif idx + 1 < len(s) and s[idx + 1] == 'C':
                        result += 90
                        idx += 1
                    else:
                        result += 10
                elif s[idx] == 'C':
                    if idx + 1 < len(s) and s[idx + 1] == 'D':
                        result += 400
                        idx += 1
                    elif idx + 1 < len(s) and s[idx + 1] == 'M':
                        result += 900
                        idx += 1
                    else:
                        result += 100
            else:
                result += dic[s[idx]]
            idx += 1
        return result

문제 쉽죠? 쉬운 문제는 주석은 달지 않도록 하겠습니다.

 

절대 귀찮아서가 아니에요 !!

 

하핫


이상 13. Roman to Integer였습니다. ^_^

반응형
LIST

'알고리즘 문제 풀이 > LeetCode' 카테고리의 다른 글

20. Valid Parentheses  (0) 2020.07.01
14. Longest Common Prefix  (2) 2020.07.01
581. Shortest Unsorted Continuous Subarray  (0) 2020.04.16
414. Third Maximum Number  (0) 2020.04.15
859. Buddy Strings  (0) 2020.04.15