12. Integer to Roman

LONGNEW·2023년 7월 11일
0

CP

목록 보기
117/155

https://leetcode.com/problems/integer-to-roman/?envType=featured-list&envId=top-google-questions

input :

  • num

output :

  • 입력 받은 수를 로마 숫자로 출력하시오.

조건 :

  • I can be placed before V (5) and X (10) to make 4 and 9.
  • X can be placed before L (50) and C (100) to make 40 and 90.
  • C can be placed before D (500) and M (1000) to make 400 and 900.

Solution explain : Solution1

idea

  • 예외적인 순간들인 IV, IX와 같은 4, 9를 나타내는 값들을 딕셔너리로 표현하자.
  • 가장 큰 값인 1000부터 나누며 몫의 수만큼 해당 로마자를 작성하고, 나머지를 남기면서 수행하기.

주의

class Solution:
    def intToRoman(self, num: int) -> str:
        ret = ""
        temp = {
            "I" : 1, "IV" : 4,
            "V" : 5, "IX" : 9,
            "X" : 10, "XL" : 40,
            "L" : 50, "XC" : 90,
            "C" : 100, "CD" : 400,
            "D" : 500, "CM" : 900,
            "M" : 1000,
        }

        keys = list(temp.keys())[::-1]
        for item in keys:
            divide = num // temp[item]
            ret += item * divide
            num %= temp[item]

        return ret

# s = Solution()
# print(s.intToRoman(3))
# print(s.intToRoman(58))
# print(s.intToRoman(1994))

0개의 댓글