Python에서 정수를 로마 숫자로 변환

Rohan Timalsina 2023년6월21일
  1. Python에서 정수를 로마 숫자로 변환
  2. 나눗셈을 사용하여 Python에서 정수를 로마 숫자로 변환
Python에서 정수를 로마 숫자로 변환

로마 숫자는 다음 7개의 기호를 사용하여 씁니다.

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

이 기호는 수천 개의 숫자를 나타내는 데 사용됩니다.

로마자로 20을 쓰려면 두 개의 X를 사용하여 XX를 만들 수 있습니다. 그러나 XXXX는 40과 같지 않습니다.

40의 로마 숫자는 XL입니다.

비슷하게:

Symbol       Value
IV             4
IX             9
XL             40
XC             90
CD             400
CM             900

이 튜토리얼은 Python에서 정수를 로마 숫자로 변환하는 방법을 알려줍니다.

Python에서 정수를 로마 숫자로 변환

다음은 주어진 정수를 로마 숫자로 변환하는 파이썬 프로그램의 구현입니다.

roman_map = [
    (1000, "M"),
    (900, "CM"),
    (500, "D"),
    (400, "CD"),
    (100, "C"),
    (90, "XC"),
    (50, "L"),
    (40, "XL"),
    (10, "X"),
    (9, "IX"),
    (5, "V"),
    (4, "IV"),
    (1, "I"),
]


def into_roman(num):
    res = ""
    while num > 0:
        for i, r in roman_map:
            while num >= i:
                res += r
                num -= i
    return res


num = int(input("Enter a number: "))
print(into_roman(num))

출력:

Enter a number: 42
XLII

위의 예에서 roman_map에는 해당 값과 기호가 있는 목록이 포함되어 있습니다. res는 빈 문자열입니다.

while num > 0num 값이 0보다 큰 경우 루프를 실행합니다. 로마 숫자에는 0을 나타내는 기호가 없습니다.

for i, r in roman_map은 첫 번째 숫자를 찾을 때까지 각 (정수, 로마자) 쌍을 반복합니다.

코드를 자세히 시각화하려면 여기에서 코드를 실행하세요.

나눗셈을 사용하여 Python에서 정수를 로마 숫자로 변환

다음 예제에서는 나누기 방법을 사용하여 사용자가 입력한 정수를 로마 숫자로 변환합니다.

roman_map = {
    1: "I",
    4: "IV",
    5: "V",
    9: "IX",
    10: "X",
    40: "XL",
    50: "L",
    90: "XC",
    100: "C",
    400: "CD",
    500: "D",
    900: "CM",
    1000: "M",
}
num = int(input("Enter a number: "))

# 13 integers in descending order
order = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

for i in order:
    if num != 0:
        quotient = num // i

        # prints the roman numeral if the quotient is not zero
        if quotient != 0:
            for j in range(quotient):
                print(roman_map[i], end="")

        # update input number with a remainder
        num = num % i

출력:

Enter a number: 42
XLII

이 접근법에서는 입력 정수를 내림차순으로 13개의 기본 정수로 나눕니다. roman_mapkey:value 쌍에 상응하는 로마 숫자와 함께 13개의 정수를 포함하는 사전입니다.

num은 사용자가 입력한 정수를 저장합니다. order 목록은 13개의 정수를 내림차순으로 저장합니다.

입력 숫자는 몫이 0이 될 때까지 order 목록의 모든 숫자로 나뉩니다.

몫이 0이 아니고 나머지가 있으면 num으로 업데이트됩니다. 루프는 계속 실행되고 로마 숫자에 해당하는 값을 얻습니다.

링크에서 위의 코드를 시각화하십시오.

이제 Python에서 정수를 로마 숫자로 변환하는 방법을 알아야 합니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - Python Integer