Skip to content

[Leetcode] 13. Roman to Integer โ€‹

Problem โ€‹

๋ฌธ์ œ ๋งํฌ

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

SymbolValue
I1
V5
X10
L50
C100
D500
M1000

Solution โ€‹

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

JS CODE โ€‹

javascript
/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
  let answer = 0
  let index = 0
  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 (s.indexOf(symbol,index) === index) {
          answer += value
          index += symbol.length
      }
  }

    return answer
};