개발 공부/알고리즘 문제 풀이

[LeetCode] 12. Integer to Roman

종범2 2021. 6. 23. 20:39

문제

LeetCode 12. Integer to Roman

https://leetcode.com/problems/integer-to-roman/

 

Integer to Roman - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

언어

자바스크립트(JavaScript)

 

접근 방법

  1. 큰 수를 의미하는 문자부터 몇 개를 사용해야 하는지 결정한다.
  2. 문자가 몇 개인지는 그 수로 나눈 몫으로 구하며, 나머지 수는 나눈 나머지로 구한다.

코드

/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function(num) {
    let result = '';
    const table = [
        {
            Symbol:'M',
            Value:1000
        },
        {
            Symbol:'CM',
            Value:900
        },
        {
            Symbol:'D',
            Value:500
        },
        {
            Symbol:'CD',
            Value:400
        },
        {
            Symbol:'C',
            Value:100
        },
        {
            Symbol:'XC',
            Value:90
        },
        {
            Symbol:'L',
            Value:50
        },
        {
            Symbol:'XL',
            Value:40
        },
        {
            Symbol:'X',
            Value:10
        },
        {
            Symbol:'IX',
            Value:9
        },
        {
            Symbol:'V',
            Value:5
        },
        {
            Symbol:'IV',
            Value:4
        },
        {
            Symbol:'I',
            Value:1
        }
    ];
    for (let i=0; i<table.length; i++){
        let size = parseInt(num / table[i].Value);
        num = num % table[i].Value;
        for (let j=0; j<size; j++){
            result += table[i].Symbol;
        }
    }
    return result
};

결과

Runtime: 132 ms, faster than 99.21% of JavaScript online submissions for Integer to Roman.

Memory Usage: 46 MB, less than 34.83% of JavaScript online submissions for Integer to Roman.

 

복기

  1. 나머지와, 몫을 이용해야 한다는 점을 떠올리면 쉽게 풀 수 있음.