알고리즘/코드워

[python]Roman Numerals Encoder

(ㅇㅅㅎ) 2020. 5. 23. 14:08
728x90
반응형

https://www.codewars.com/kata/51b62bf6a9c58071c600001b/train/python

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이 문제는 입력받은 10진수를 로마 숫자로 출력하는 것입니다.

 

풀이를 보시려면 더보기를 누르시면 됩니다.

더보기

Roman Numerals Encoder

10진수를 로마 숫자로 바꾸러면 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000의 로마 숫자를 미리 딕셔너리에 정의를 합니다.

그다음 for문을 이용해서 큰 순서대로 정리를 합니다.(큰 순서대로 미리 정의하셨으면 이 단계는 없어도 됩니다.)

마지막으로 while 문을 사용하여 입력받은 수가 0이 될 때까지 문자를 더해가면 됩니다.

 

전체 코드

def solution(n):
    roman = {1'I'4'IV'5'V'9:'IX',
             10'X'40'XL'50'L'90'XC',
             100'C'400'CD'500'D'900'CM',
             1000'M'}
    answer = ""
    for i in reversed(sorted((roman.keys()))):
        while i <= n:
            n -= i
            answer += roman[i]
    return answer
 
 
if __name__ == '__main__':
    print(solution(1000))
    print(solution(6))
 

처음 문제를 풀 때는 딕셔너리에 정의할 생각을 못하고 while 문과 if문을 이용하여 문제를 풀었습니다. 이 외에도 다양한 방법으로 풀어보시길 바랍니다. 

반응형

'알고리즘 > 코드워' 카테고리의 다른 글

[python]Take a Ten Minute Walk  (0) 2020.10.27
[python]List Filtering  (0) 2020.10.26
[python]Roman Numerals Decoder  (0) 2020.05.23
[python]IP Validation  (0) 2020.05.16
[python]RGB To Hex Conversion  (0) 2020.05.13