728x90
반응형
https://www.codewars.com/kata/51b6249c4612257ac0000005/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/Wixdb/btqElXLJm2s/DUBVFZKlkYSGKWJQwioZp1/img.png)
![](https://blog.kakaocdn.net/dn/cqgAwU/btqElkAGd5u/2nFpm3fdFw2cZtlR0dJc00/img.png)
Roman Numerals Decoder
로마 숫자의 경우 현재 글자와 뒤의 글자를 비교하여 현재 글자가 크거나 같으면 해당되는 숫자를 더하고 작을 경우는 빼주면 됩니다. 그리고 맨 마지막 글자는 무조건 더해줍니다.
![](https://blog.kakaocdn.net/dn/Wixdb/btqElXLJm2s/DUBVFZKlkYSGKWJQwioZp1/img.png)
딕셔너리를 이용해서 각 로마 숫자를 숫자와 매칭 시키고 입력받는 로마 숫자를 문자열로 인식하여 for문을 이용하여 한 글자씩 조건에 맞추어 숫자를 더하거나 뺐습니다.
전체 코드
# My Code
def solution(roman):
n = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
answer = 0
for i in range(0, len(roman) - 1):
if n[roman[i]] >= n[roman[i + 1]]:
answer += n[roman[i]]
else:
answer -= n[roman[i]]
return answer + n[roman[-1]]
if __name__ == '__main__':
print(solution('XXI'), 21)
print(solution('I'), 1)
print(solution('IV'), 4)
print(solution('MMVIII'), 2008)
print(solution('MDCLXVI'), 1666)
|
![](https://blog.kakaocdn.net/dn/cqgAwU/btqElkAGd5u/2nFpm3fdFw2cZtlR0dJc00/img.png)
반응형
'알고리즘 > 코드워' 카테고리의 다른 글
[python]List Filtering (0) | 2020.10.26 |
---|---|
[python]Roman Numerals Encoder (0) | 2020.05.23 |
[python]IP Validation (0) | 2020.05.16 |
[python]RGB To Hex Conversion (0) | 2020.05.13 |
[python]Take the Derivative (0) | 2020.05.09 |