로마 시대 때는 현재 사용하는 아라비아 숫자가 아닌 다른 방법으로 수를 표현하였다.
로마 숫자는 다음과 같은 7개의 기호로 이루어진다.
기호 | I | V | X | L | C | D | M |
---|---|---|---|---|---|---|---|
값 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
수를 만드는 규칙은 다음과 같다.
아래의 예를 참고 하시오.
로마 숫자로 이루어진 두 수를 입력받아 그 둘을 더한 값을 아라비아 숫자와 로마 숫자로 출력하는 프로그램을 작성하시오.
# 2608
import sys
input = lambda: sys.stdin.readline().strip()
# 1. 입력받은 로마 숫자를 아라비아 숫자로 변환한다.
# 2. 아라비아 숫자의 합을 출력한다.
# 3. 아라비아 숫자의 합을 로마 숫자로 변환해 출력한다.
number = {"M" : 1000, "CM" : 900, "D" : 500, "CD" : 400, "C" : 100, "XC" : 90, "L" : 50, "XL" : 40, "X" : 10, "IX" : 9, "V" : 5, "IV" : 4, "I" : 1}
number_r = {v : k for k, v in number.items()}
def from_roma_to_arabia(arr):
len_number = len(arr)
num = 0
check = False
for i in range(len_number):
if check:
check = False
continue
if i != len_number - 1 and arr[i] + arr[i+1] in number.keys():
num += number[arr[i] + arr[i+1]]
check = True
else:
num += number[arr[i]]
return num
def from_arabia_to_roma(num):
roma = ""
numbers = [1000, 1000, 1000, 900, 500, 400, 100, 100, 100, 90, 50, 40, 10, 10, 10, 9, 5, 4, 1, 1, 1]
for n in numbers:
if num >= n:
roma += number_r[n]
num -= n
return roma
num1 = input()
num2 = input()
arabia = from_roma_to_arabia(num1) + from_roma_to_arabia(num2)
print(arabia)
roma = from_arabia_to_roma(arabia)
print(roma)