티스토리 뷰

 

안녕하세요. 죠쵸입니다.

네번째 LeetCode 문제 풀이 포스팅을 올립니다.

 

#LeetCode 13. Roman to Integer (Description)

 

이번 문제는 LeetCode 13번째 문제로 Roman 숫자를 입력받아서, 정수형 숫자로 변환하는 문제입니다. Roman 숫자는 아래와 같이 7가지 문자로 숫자를 표현합니다. 

 

 

II의 경우 2를 의미하고, XII는 12를 의미합니다. LXI는 61을 의미합니다. Roman 숫자는 기본적으로 큰수부터 작은 수의 문자를 나열해서 표기하지만 작은 수의 문자를 앞에 두어 4(IV), 9(IX), 40(XL), 90(XC), 400(CD), 900(CM)을 아래와 같이 표기 할 수 있습니다. 아래의 예시를 참조 바랍니다.

 

 

#LeetCode 13. Roman to Integer (Solution)

 

제가 풀이한 방식은 각 Roman 숫자를 Dictionary로 셋팅해 놓고 입력된 문자열을 읽어 각 자릿수의 수가 다음 자릿수보다 크거나 같을 경우 더하고, 다음 자릿수보다 작을 경우 빼어서 최종 정수형 숫자를 구하였습니다. 처리하는 과정에서 입력 받은 문자를 리스트로 담아서, 문자 리스트를 다시 정수 리스트로 변환하였습니다. 아래의 코드를 참조 부탁 드립니다.

class Solution:
    def romanToInt(self, s: str) -> int:
        roman = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
        charList = list(s)
        intList = []
        for char in charList:
            intList.append(roman.get(char))

        retValue = 0
        for i in range(0, (len(intList))):
            if (i == len(intList)-1):
                retValue += intList[i]
            elif intList[i] >= intList[i+1]:
                retValue += intList[i]
            elif intList[i] < intList[i+1]:
                retValue -= intList[i]
        return retValue

 

제가 풀이한 내용 중에서 잘못된 부분이 있거나, 더 좋은 처리 방법이 있으시면 공유 부탁 드립니다. 더 멋있고 깔끔하고 효율적인 코드를 위해서는 많은 노력과 배움이 필요한 것 같습니다. 같이 성장해요~ :)

방문해 주셔서 감사합니다. 여러분의 공감하기(), 댓글과 구독은 저에게 힘이 됩니다.

이상으로 죠쵸였습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함