Skip to content

[Leetcode] 12. Integer to Roman โ€‹

Problem โ€‹

๋ฌธ์ œ ๋งํฌ

์ฃผ์–ด์ง„ ์ˆซ์ž๊ฐ’์„ ๋กœ๋งˆ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

SymbolValue
I1
V5
X10
L50
C100
D500
M1000

Solution โ€‹

  1. ๋กœ๋งˆ ์‹ฌ๋ณผ์˜ ๋ฐฐ์—ด์„ ๋‚ด๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  2. ์ธ๋ฑ์Šค๋ฅผ ์ด๋™ํ•˜๋ฉฐ ๊ทธ ์ˆ˜๋ฅผ ์ฃผ์–ด์ง„ ๊ฐ’์—์„œ ๋‚˜๋ˆ ์„œ ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ์กด์žฌํ•˜๋Š” ๋งŒํผ ์‹ฌ๋ณผ์„ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์ฃผ์–ด์ง„ ๊ฐ’์ด 0์ด ๋ ๋•Œ๊นŒ์ง€ ์‹ฌ๋ณผ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ด๋™ํ•˜๋ฉฐ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

JS CODE โ€‹

javascript
/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function(num) {

  let answer = []
  const romans = [
    [1000, 'M'],
    [900, 'CM'],
    [500, 'D'],
    [400, 'CD'],
    [100, 'C'],
    [90, 'XC'],
    [50, 'L'],
    [40, 'XL'],
    [10, 'X'],
    [9, 'IX'],
    [5, 'V'],
    [4, 'IV'],
    [1, 'I'],
  ]

  for(const [value, symbol] of romans) {
    while(parseInt(num / value)) {
      answer.push(symbol)
      num -= value
    }
  }

  return answer.join('')
}