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 |