728x90
https://www.acmicpc.net/problem/2608
2608번: 로마 숫자
첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다.
www.acmicpc.net
roma = ['M', 'D', 'C', 'L', 'X','V', 'I']
num = [1000, 500, 100, 50, 10, 5, 1]
a = list(input())
b = list(input())
hap = 0
exc = ['CM', 'CD', 'XC', 'XL', 'IX', 'IV']
e = 0
pos = 0
while 1:
if pos == len(a)-1:
break
if exc[e] == a[pos] + a[pos+1]:
if num[e] >= 500:
hap += (num[e] - 100)
elif num[e] >= 50:
hap += (num[e] - 10)
else:
hap += (num[e] - 1)
exc[e] = 0
if e % 2 == 0:
exc[e+1] = 0
else:
exc[e-1] = 0
a[pos] = ''
a[pos+1] = ''
if e == 5:
e = 0
pos += 1
continue
e += 1
r = 0
pos = 0
while 1:
if r == 7:
r = 0
pos += 1
if pos == len(a):
break
if roma[r] == a[pos]:
hap += num[r]
a[pos] = ''
r = 0
pos += 1
continue
else:
r += 1
exc = ['CM', 'CD', 'XC', 'XL', 'IX', 'IV']
e = 0
pos = 0
while 1:
if pos == len(b)-1:
break
if exc[e] == b[pos] + b[pos+1]:
if num[e] >= 500:
hap += (num[e] - 100)
elif num[e] >= 50:
hap += (num[e] - 10)
else:
hap += (num[e] - 1)
exc[e] = 0
if e % 2 == 0:
exc[e+1] = 0
else:
exc[e-1] = 0
b[pos] = ''
b[pos+1] = ''
if e == 5:
e = 0
pos += 1
continue
e += 1
r = 0
pos = 0
while 1:
if r == 7:
r = 0
pos += 1
if pos == len(b):
break
if roma[r] == b[pos]:
hap += num[r]
b[pos] = ''
r = 0
pos += 1
continue
else:
r += 1
result1 = hap
print(result1)
result2 = ''
# 합을 로마 숫자로
# ['M','CM','D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
# [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
cnt = [3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3]
while 1:
if hap == 0:
break
if hap >= 1000 and cnt[0] > 0:
hap -= 1000
cnt[0] -= 1
print("M", end = '')
elif hap >= 900 and cnt[1] > 0:
hap -= 900
cnt[1] -= 1
print("CM", end = '')
elif hap >= 500 and cnt[2] > 0:
hap -= 500
cnt[2] -= 1
print("D", end = '')
elif hap >= 400 and cnt[3] > 0:
hap -= 400
cnt[3] -= 1
print("CD", end = '')
elif hap >= 100 and cnt[4] > 0:
hap -= 100
cnt[4] -= 1
print("C", end = '')
elif hap >= 90 and cnt[5] > 0:
hap -= 90
cnt[5] -= 1
print("XC", end = '')
elif hap >= 50 and cnt[6] > 0:
hap -= 50
cnt[6] -= 1
print("L", end = '')
elif hap >= 40 and cnt[7] > 0:
hap -= 40
cnt[7] -= 1
print("XL", end = '')
elif hap >= 10 and cnt[8] > 0:
hap -= 10
cnt[8] -= 1
print("X", end = '')
elif hap >= 9 and cnt[9] > 0:
hap -= 9
cnt[9] -= 1
print("IX", end = '')
elif hap >= 5 and cnt[10] > 0:
hap -= 5
cnt[10] -= 1
print("V", end = '')
elif hap >= 4 and cnt[11] > 0:
hap -= 4
cnt[11] -= 1
print("IV", end = '')
elif hap >= 1 and cnt[12] > 0:
hap -= 1
cnt[12] -= 1
print("I", end = '')
반응형
'전.py' 카테고리의 다른 글
백준 2606 바이러스 (0) | 2020.12.12 |
---|---|
백준 2607 비슷한 단어 (0) | 2020.12.12 |
백준 1289 팰린드롬수 (0) | 2020.12.12 |
백준 1371 가장 많은 글자 (0) | 2020.12.12 |
백준 1568 새 (0) | 2020.12.12 |