:pencil2:코드1

import sys
sys.stdin = open("input.txt")
input = sys.stdin.readline


dict = {"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}

a = list(input().rstrip())
b = list(input().rstrip())
num_a = 0
num_b = 0
flag_a = True
flag_b = True
for i in range(len(a) - 1):
    if flag_a:
        if dict[a[i + 1]] > dict[a[i]]:
            num_a += (dict[a[i + 1]] - dict[a[i]])
            flag_a = False
        else:
            num_a += dict[a[i]]
    else:
        flag_a = True
if flag_a:
    num_a += dict[a[-1]]

for i in range(len(b) - 1):
    if flag_b:
        if dict[b[i + 1]] > dict[b[i]]:
            num_b += (dict[b[i + 1]] - dict[b[i]])
            flag_b = False
        else:
            num_b += dict[b[i]]
    else:
        flag_b = True
if flag_b:
    num_b += dict[b[-1]]

num = num_a + num_b
print(num)
answer = ""
for rome in list(dict.keys()):
    temp = num // dict[rome]
    for _ in range(temp):
        answer += rome
    num = num % dict[rome]


print(answer)

:pencil2:코드2

import sys
sys.stdin = open("input.txt")
input = sys.stdin.readline


def num2rome(num):
    answer = ""
    for rome in list(dict.keys()):
        temp = num // dict[rome]
        for _ in range(temp):
            answer += rome
        num = num % dict[rome]
    return answer


def rome2num(rome):
    flag = True
    num = 0
    for i in range(len(rome) - 1):
        if flag:
            if dict[rome[i + 1]] > dict[rome[i]]:
                num += (dict[rome[i + 1]] - dict[rome[i]])
                flag = False
            else:
                num += dict[rome[i]]
        else:
            flag = True
    if flag:
        num += dict[rome[-1]]

    return num


dict = {"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}

a = list(input().rstrip())
b = list(input().rstrip())

number = rome2num(a) + rome2num(b)
print(number)
print(num2rome(number))

:start:풀이

먼저 기호와 숫자를 key, value로 갖는 dict를 만들어주었다. 풀이는 간단하다. 로마숫자를 아라비아 숫자로 바꿀 때에는 작은수가 큰수 앞에 오는 경우만 고려해주면 된다. 아라비아 숫자를 로마숫자로 바꿀 때에는 제일 큰 수부터 차례대로 나누어주면 된다. 코드를 두개 적었는데 코드1은 처음 풀었을 때의 코드이다. 입력에 두개만 들어와서 그냥 두개의 for문을 돌아주었다. 맞힌 사람들 코드를 구경하다가 함수로 정의하신 분들이 많이 있어서 나도 함수를 정의해서 코드를 작성해보았다. 만약 숫자가 여러개 들어오면 함수로 정의하여 푸는게 더 효율적일 것이다.

댓글남기기