[CodeKata] -6

김가람휘·2022년 2월 21일
0

CodeKata

목록 보기
6/28

def roman_to_num(s):
  # 여기에 코드를 작성해주세요.
  roman_num = ["M", "D", "C", "L", "X", "V", "I"]
  roman_num_value = [1000, 500, 100, 50, 10, 5, 1]
  exception = ["IV", "IX", "XL", "XC", "CD", "CM"]
  exception_value = [4, 9, 40, 90, 400, 900]
  result = 0

  for i in range(len(exception)):
    if exception[i] in s:
      s = s.replace(exception[i], '')
      result += exception_value[i]


  for k in range(len(roman_num)):
    while roman_num[k] in s:
      s = s[1:]
      result += roman_num_value[k]

  return result
def roman_to_num(s):
  # 여기에 코드를 작성해주세요.
  roman_num = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

  try:
    s = list(s)
    sum = 0
    for i in range(len(s)):
      if roman_num[s[i]] >= roman_num[s[i+1]]:
        sum += roman_num[s[i]]
      else:
        sum -= roman_num[s[i]]
        
  except IndexError: # i가 문자열의 마지막일 때 에러 발생
    sum += roman_num[s[i]]
    
  return sum
def roman_to_num(s):
  # 여기에 코드를 작성해주세요.
  roman_num = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
  num = s[0]
  number = roman_num[num]

  for i in range(1,len(s)):
    bnum = num
    num = s[i]
    if roman_num[bnum]>=roman_num[num]:
      number += roman_num[num]
    else:
      number += roman_num[num] - 2*roman_num[bnum]

  return number

0개의 댓글