로마자로 정수
I , V , X , L , C , D 및 M 의 7가지 기호로 표시됩니다.기호 값
나는 1
V 5
× 10
L 50
씨 100
디 500
남 1000
예를 들어,
2는 로마 숫자로 II로 표시되며, 1을 두 개만 더하면 됩니다. 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:
입력: 숫자 = 3
출력: "III"
설명: 3은 3개의 1로 표현됩니다.
예 2:
입력: 숫자 = 58
출력: "LVIII"
설명: L = 50, V = 5, III = 3.
예 3:
입력: 숫자 = 1994
출력: "MCMXCIV"
설명: M = 1000, CM = 900, XC = 90 및 IV = 4.
제약:
1 <= num <= 3999 해결책:
class Solution:
    def intToRoman(self, num: int) -> str:
        sym = {
            1: "I",
            5: "V",
            10: "X",
            50: "L",
            100: "C",
            500: "D",
            1000: "M"
        }
        keys = list(sym.keys())
        k = len(keys)
        vals = []
        i = 1
        while num > 0:
            curr = num % (10 ** i)
            vals.insert(0, curr)
            num -= curr
            i += 1
        print(vals)
        op = ""
        curr = 0
        while curr < len(vals):
            v = vals[curr]
            if v in sym:
                op += sym[v]
            else:
                found = False
                for i in range(k):
                    for j in range(i + 1, k):
                        if v == keys[j] - keys[i]:
                            found = True
                            op += sym[keys[i]] + sym[keys[j]]
                            break
                if not found:
                    for key in keys[::-1]:
                        if v > key:
                            op += sym[key] * (v // key)
                            vals.insert(curr + 1, v % key)
                            break
            curr += 1
        return op
                Reference
이 문제에 관하여(로마자로 정수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/integer-to-roman-1dol텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)