stack overflow란?

while(alive){ code();

코딩테스트

[leetcode] 12. Integer to Roman : python

나가니 2023. 1. 17. 22:29

로마 숫자는 I, V, X, L, C, D, M의 일곱 가지 기호로 표현된다.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000


예를 들어, 2는 로마 숫자로 II로 쓰여지고, 2는 단지 하나를 더하면 된다. 
12는 XII로 쓰여지고, 이것은 간단히 X+II이다. 
숫자 27은 XXVII로 쓰여져 있는데, XX + V + II이다.
로마 숫자는 보통 왼쪽에서 오른쪽으로 큰 것부터 작은 것까지 쓴다. 
그러나 4의 숫자는 IIII가 아니다. 대신 숫자 4는 IV로 쓰여져 있다. 
"1"이 "5"보다 앞에 있기 때문에 우리는 그것을 4로 빼야 한다. 
같은 원리가 IX로 표기된 숫자 9에도 적용된다. 뺄셈이 사용되는 경우는 6가지가 있다:

I는 V(5)와 X(10) 앞에 배치되어 4와 9를 만들 수 있다.
X는 L(50)과 C(100) 앞에 놓아서 40과 90을 만들 수 있다.
C는 D(500)와 M(1000) 앞에 놓아서 400과 900을 만들 수 있다.
지정된 정수를 로마 숫자로 변환합니다.

  • 1 <= num <= 3999
class Solution:
    def intToRoman(self, num: int) -> str:
        number = []
        trans = {
            'M': 1000,
            'CM': 900,
            'D': 500,
            'CD': 400,
            'C': 100,
            'XC': 90,
            'L': 50,
            'XL': 40,
            'X': 10,
            'IX': 9,
            'V': 5,
            'IV': 4,
            'I': 1
        }
 
        for i in trans:
            q = num // trans[i]
            r = num % trans[i]
            num = r
            number.append(i * q)
 
        return ''.join(number)