시나리오
요즘 언휴는 로마 숫자에 빠져있어요.
아라비아 숫자보다 뭔가 멋있다는 생각이 들어 일상에서 간단한 수는 로마 숫자로 표기하고 있어요.
하지만 로마 숫자로 표기하면 매 번 수를 계산하는데 시간이 걸리네요.
언휴는 빠르게 아라비아 수로 변환할 필요성을 느꼈어요.
여러분은 언휴를 도와 로마 숫자로 표기한 내용을 아라비아 수로 변환하는 코드를 작성하세요.
로마숫자 | 값 |
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
로마 숫자는 기호를 합산하여 수를 계산합니다.
예를 들어 III는 3(1+1+1)이며 LV는 55(50+5)입니다.
만약 작은 수가 큰 수보다 앞에 오면 큰 수에서 작은 수를 빼야 합니다.
에를 들어 IV는 4(5-1)인 것이죠.
문제
난이도: 2 (easy) [1:very easy, 2:easy, 3:middle, 4: difficult, 5: very difficult]
입력: “MCMXCIV”
출력: 1994
설명: 1000(M)-100(C)+1000(M)-10(X)+100(C)-1(I)+5(V)=1994
코드
def Roman2Number(roman): #to do print("%d"%Roman2Number("MCMXCIV"))
솔루션
def Roman2Number(roman): rdict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} nv = roman[0] number=rdict[nv] for i in range(1,len(roman)): bv = nv nv = roman[i] if(rdict[bv]>=rdict[nv]): number += rdict[nv] else: number += rdict[nv] - 2*rdict[bv] return number print("%d"%Roman2Number("MCMXCIV"))