LeetCode-12
Integer to Roman : Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.
note : Given an integer, convert it to a roman numeral.
Answer
:::python
class Solution:
def intToRoman(self, num: int) -> str:
roman_dict = {
0 : "V"
,1 : "L"
,2 : "D"
}
d_dict= {
0 : "I"
,1 : "X"
,2 : "C"
,3 : "M"
}
answer = ''
set_num = 3
while set_num >= 0:
remain = num // 10set_num
if remain < 4:
answer+= d_dict[set_num] * remain
elif remain == 4:
answer+= d_dict[set_num] + roman_dict[set_num]
elif remain == 9:
answer+= d_dict[set_num] + d_dict[set_num+1]
elif remain == 0:
pass
else:
answer += roman_dict[set_num] + d_dict[set_num]*(remain-5)
num %= 10set_num
set_num -= 1
return answer
Result : 48ms Memory: 13.9mb
Integer to Roman이란?
Integer to Roman이란, 정수를 로마 숫자로 변환하는 알고리즘입니다. 로마 숫자는 기원전 1세기에 로마 제국에서 사용되었던 기호 체계이며, I, V, X, L, C, D, M의 숫자를 사용합니다.
알고리즘 설명
Integer to Roman 알고리즘은 일반적으로 다음과 같이 진행됩니다.
- 로마 숫자와 정수 간의 대응 관계를 나타내는 딕셔너리를 선언합니다.
- 입력된 정수를 가장 큰 로마 숫자부터 나누어 몫을 구하고, 로마 숫자에 해당하는 기호를 문자열에 추가합니다.
- 나머지로 남은 정수로 다시 1~2번 과정을 반복합니다.
- 최종적으로 만들어진 로마 숫자 문자열을 반환합니다.
예를 들어, 입력된 정수가 1994일 경우 다음과 같은 과정을 거칩니다.
- 로마 숫자 딕셔너리: {'M': 1000, 'CM': 900, 'D': 500, 'CD': 400, 'C': 100, 'XC': 90, 'L': 50, 'XL': 40, 'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1}
- 1994를 1000으로 나눈 몫은 1, 로마 숫자는 "M"가 됩니다. 문자열에 "M"을 추가합니다.
- 나머지는 994입니다. 994를 900으로 나눈 몫은 1, 로마 숫자는 "CM"이 됩니다. 문자열에 "CM"을 추가합니다.
- 나머지는 94입니다. 94를 50으로 나눈 몫은 1, 로마 숫자는 "L"이 됩니다. 문자열에 "L"을 추가합니다.
- 나머지는 44입니다. 44를 40으로 나눈 몫은 1, 로마 숫자는 "XL"이 됩니다. 문자열에 "XL"을 추가합니다.
- 나머지는 4입니다. 4를 4로 나눈 몫은 1, 로마 숫자는 "IV"가 됩니다. 문자열에 "IV"를 추가합니다.
- 최종 로마 숫자 문자열은 "MCMXLIV"입니다.
예제 코드(파이썬)
def int_to_roman(num):
roman_dict = {'M': 1000, 'CM': 900, 'D': 500, 'CD': 400, 'C': 100, 'XC': 90, 'L': 50, 'XL': 40, 'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1}
roman = ''
for key in roman_dict:
roman += key * (num // roman_dict[key])
num %= roman_dict[key]
return roman
이 코드는 입력된 정수를 로마 숫자로 변환하여 반환합니다. 딕셔너리를 활용하여 로마 숫자와 정수 간의 대응 관계를 설정하고, 반복문을 통해 각 로마 숫자를 순차적으로 처리합니다. 최종 로마 숫자 문자열을 반환합니다.
'One step' 카테고리의 다른 글
[leetcode-43] Multiply Strings (0) | 2023.04.26 |
---|---|
[leetcode-14] Longest Common Prefix (0) | 2023.04.24 |
[leetcode-10] Regular Expression Matching (0) | 2023.04.20 |
[leetcode-8] String to Integer (atoi) (0) | 2023.04.19 |
[leetcode-6] Zigzag Conversion (0) | 2023.04.18 |