로마 숫자 text를 숫자로 환산하기

4155 단어 code katacode kata

분석

로마 숫자(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 이다)
그러므로 로마자가 담긴 배열의 앞에서부터 순차적으로 접근, 뒤의 값과 비교하여 두 가지 처리 중 하나를 총 값에 누적처리 하면 됨

좋은 웹페이지 즐겨찾기