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진수를 로마 숫자로 출력하는 것입니다.
풀이를 보시려면 더보기를 누르시면 됩니다.
더보기
![](https://blog.kakaocdn.net/dn/bESkMH/btqEm3EeXvL/nGDSQrrutdPUNwabnVm7Fk/img.png)
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))
|
![](https://blog.kakaocdn.net/dn/bESkMH/btqEm3EeXvL/nGDSQrrutdPUNwabnVm7Fk/img.png)
처음 문제를 풀 때는 딕셔너리에 정의할 생각을 못하고 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 |