로마에서 정수로

2050 단어 theabbieleetcodedsa
로마 숫자는 I , V , X , L , C , DM 의 7가지 기호로 표시됩니다.

기호 값
나는 1
V 5
× 10
L 50
씨 100
디 500
남 1000

예를 들어, 2는 로마 숫자로 II로 표시되며, 1을 두 개만 더하면 됩니다. 12XII로 작성되며 간단히 X + II입니다. 숫자 27XXVII로 쓰여지며, 이는 XX + V + II입니다.

로마 숫자는 일반적으로 왼쪽에서 오른쪽으로 큰 순서로 씁니다. 그러나 4의 숫자는 IIII가 아닙니다. 대신, 숫자 4는 IV로 쓰여집니다. 1이 5보다 앞에 있기 때문에 빼면 4가 됩니다. 같은 원리가 IX로 쓰여진 숫자 9에도 적용됩니다. 빼기가 사용되는 경우는 6가지입니다.
  • IV (5)와 X (10) 앞에 배치되어 4와 9를 만들 수 있습니다.
  • XL (50) 및 C (100) 앞에 배치되어 40 및 90을 만들 수 있습니다.
  • CD (500) 및 M (1000) 앞에 배치하여 400 및 900을 만들 수 있습니다.

  • 로마 숫자가 주어지면 정수로 변환하십시오.

    예 1:

    입력: s = "III"
    출력: 3
    설명: III = 3.

    예 2:

    입력: s = "LVIII"
    출력: 58
    설명: L = 50, V= 5, III = 3.

    예 3:

    입력: s = "MCMXCIV"
    산출: 1994년
    설명: M = 1000, CM = 900, XC = 90 및 IV = 4.

    제약:
  • 1 <= s.length <= 15
  • s에는 ('I', 'V', 'X', 'L', 'C', 'D', 'M') 문자만 포함됩니다.
  • s[1, 3999] 범위의 유효한 로마 숫자임을 보장합니다.

  • 해결책:

    class Solution:
        def romanToInt(self, s: str) -> int:
            sym = {
                "I": 1,
                "V": 5,
                "X": 10,
                "L": 50,
                "C": 100,
                "D": 500,
                "M": 1000
            }
            n = len(s)
            val = 0
            for i in range(n):
                if i < n - 1 and sym[s[i]] < sym[s[i + 1]]:
                    val -= sym[s[i]]
                else:
                    val += sym[s[i]]
            return val
    

    좋은 웹페이지 즐겨찾기