Dictionary 알고리즘

hyuckhoon.ko·2020년 6월 15일
0

What I learned in wecode

목록 보기
53/109

1. 문제

로마자에서 숫자로 바꾸기

1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요.
로마 숫자를 숫자로 표기하면 다음과 같습니다.

로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다.
III = 3
XII = 12
XXVII = 27
입니다.

그런데 4를 표현할 때는 IIII가 아니라 IV 입니다.
뒤의 숫자에서 앞의 숫자를 빼주면 됩니다.
9는 IX입니다.



2. 풀이

roman_to_num('XII')
다음과 같이 호출했을때, 양의 정수 7이 나와야 함.

def roman_to_num(string):
  string = list(string)
  roma = dict()
  roma = {'I' : 1,
    	  'V' : 5,
          'X' : 10,
          'L' : 50,
          'C' : 100,
          'D' : 500,
          'M' : 1000
          }
          
  # 로마자를 숫자로 변환하여 리스트에 입력
  new_list = list()
  for letter in string:
    new_list.append(roma[letter])
 
  sum = 0
  for i in range(len(new_list)):
  # 리스트 인덱스 범위를 벗어나면 반복문 종료
    if (i+1) == len(new_list):
      break;
  # 다음 인덱스의 리스트 요소값이 현재 인덱스의 그것보다 작다면,
    if new_list[i+1] <= new_list[i]:
      sum +=new_list[i]
  # 현재 인덱스의 요소값이 더 크므로, 로마자  
    else:
      sum -= new_list[i]
  sum += new_list[len(new_list)-1]
      
  return sum


0개의 댓글