로마 숫자가 있다고 가정합니다. 숫자로 변환해야 합니다. 우리가 알고 있듯이 로마 숫자는 왼쪽에서 오른쪽으로 가장 큰 것에서 작은 것 순으로 기호로 표시되며, 유일한 예외는 기호보다 하나 작은 경우입니다. 일부 로마 숫자 기호 의미는 다음과 같습니다.
-
'M':1000
-
'D':500
-
'C':100
-
'L':50
-
'X':10
-
'V':5
-
'나':1
따라서 입력이 숫자 ="MCLXVI"와 같으면 출력은 1166이 됩니다. M =1000, C =100, 총계는 1100, L =50, X =10, VI =6이므로 총계는 1166입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다.
위에서 언급한 대로 숫자 목록을 가져옵니다.
-
답변 :=0
-
n :=숫자 크기
-
각 인덱스 idx 및 값 c 숫자에 대해 수행
-
idx
-
ans :=ans - d[c]
-
-
그렇지 않으면
-
ans :=ans + d[c]
-
-
-
반환
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
예
class Solution: def solve(self, numeral): d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1} ans = 0 n = len(numeral) for (idx, c) in enumerate(numeral): if idx < n - 1 and d[c] < d[numeral[idx + 1]]: ans -= d[c] else: ans += d[c] return ans ob = Solution() numeral = "MCLXVI" print(ob.solve(numeral))
입력
"MCLXVI"
출력
1166