분석
로마 숫자(I, II, IV, V, X...)를 숫자로 바꿔 출력해야 한다.
풀이
def roman_to_num(string):
roman = {
'I':1,
'V':5,
'X':10,
'L':50,
'C':100,
'D':500,
'M':1000
}
data = 0;
for i in range(len(string)):
if i < len(string)-1 and roman[string[i+1]] > roman[string[i]]:
data -= roman[string[i]]
else:
data += roman[string[i]]
return data
print(roman_to_num('CD'))
해석
로마 숫자의 patter을 분석해보면 앞뒤로 붙은 로마자를 기준으로 앞이 크면 '+' 처리를 하면 된다. 반대로 뒤가 크면 이는 뒤의 값에서 앞의 값을 뺀다는 의미(예로 IV 는 5 - 1 = 4 이다)
그러므로 로마자가 담긴 배열의 앞에서부터 순차적으로 접근, 뒤의 값과 비교하여 두 가지 처리 중 하나를 총 값에 누적처리 하면 됨