algorithm | February 17, 2020
Q: 로마자를 숫자로 바꾸기
def roman_to_num(string):
string_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
string_dict2 = {'IV' : 4, 'IX' : 9, 'XL' : 40, 'XC' : 90, 'CD' : 400, 'CM' : 900}
result = 0
new_string = string
for index in range(len(string)-1):
str_sub = string[index] + string[index + 1]
if str_sub in string_dict2.keys():
result += string_dict2[str_sub]
new_string = new_string.replace(str_sub, '')
for value in new_string:
if value in string_dict.keys():
result += string_dict[value]
return result
전혀 생각지도 못한 solution이었다.
함수 안에 함수를 또 실행시킨다는 생각을 왜 못 했을까?!
numbers = {
"I" : 1,
"IV" : 4,
"V" : 5,
"IX" : 9,
"X" : 10,
"XL" : 40,
"L" : 50,
"XC" : 90,
"C" : 100,
"CD" : 400,
"D" : 500,
"CM" : 900,
"M" : 1000,
}
def roman_to_num(string):
if not string:
return 0
if numbers.get(s[:2]):
return numbers.get(s[:2]) + roman_to_num(s[2:])
return numbers.get(s[:1]) + roman_to_num(s[1:])