728x90
반응형
https://www.codewars.com/kata/51b6249c4612257ac0000005/train/python
이 문제는 로마 숫자를 입력받으면 10진수로 출력해야 하는 문제입니다.
풀이를 보시려면 더보기를 누르시면 됩니다.
더보기
Roman Numerals Decoder
로마 숫자의 경우 현재 글자와 뒤의 글자를 비교하여 현재 글자가 크거나 같으면 해당되는 숫자를 더하고 작을 경우는 빼주면 됩니다. 그리고 맨 마지막 글자는 무조건 더해줍니다.
딕셔너리를 이용해서 각 로마 숫자를 숫자와 매칭 시키고 입력받는 로마 숫자를 문자열로 인식하여 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)
|
반응형
'알고리즘 > 코드워' 카테고리의 다른 글
[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 |