Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 로마 숫자를 정수로 변환하는 프로그램?

<시간/>

로마 숫자가 있다고 가정합니다. 숫자로 변환해야 합니다. 우리가 알고 있듯이 로마 숫자는 왼쪽에서 오른쪽으로 가장 큰 것에서 작은 것 순으로 기호로 표시되며, 유일한 예외는 기호보다 하나 작은 경우입니다. 일부 로마 숫자 기호 의미는 다음과 같습니다.

  • '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