replace()

replace

 

[QUIZ] Reverse Roman Numerals

https://py.checkio.org/en/mission/reverse-roman-numerals/

<among one of the most creative solution>

    for before, after in [('CM', 'DCCCC'), ('CD', 'CCCC'),
                          ('XC', 'LXXXX'), ('XL', 'XXXX'),
                          ('IX', 'VIIII'), ('IV', 'IIII')]:

        roman_string = roman_string.replace(before, after)
~~~~
틀린 풀이: 2자리가 4자리로 바꾸면 replace연산을 하지말아야할곳을 하게되어 오류발생

<내 풀이>

def reverse_roman(roman_string):
    roman_numeral_s = {
        'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, '': 0
    }
    roman_numeral_d = {
        'IV': 4, 'IX': 9, 'XC': 90, 'XL': 40, 'CD':400, 'CM': 900
    }

    sum = 0
    before_char = ''

    for c in roman_string:
        couple = before_char + c
        if couple in roman_numeral_d:
            sum += roman_numeral_d.get(couple)
            before_char = ''

        else:
            sum += roman_numeral_s.get(before_char)
            before_char = c

    sum += roman_numeral_s.get(before_char)

    return sum

 

 

댓글 남기기