[Leetcode] 13. Roman to Integer

Seongjun Lee·2022년 2월 19일
0

[Leetcode] - Problem

목록 보기
13/43
post-thumbnail

Problem

문제 링크

로마값을 숫자로 표현하기

SymbolValue
I1
V5
X10
L50
C100
D500
M1000

Solution

  1. 로마 심볼의 배열을 내름차순으로 생성한다.
  2. 문자열 첫번째부터 심볼이 존재하는 여부를 파악한다. 심볼이 존재한다면 해당 심볼의 길이만큼 인덱스를 이동시켜 찾고자하는 심볼이 인덱스의 첫번째 값인지 파악한다.
    • 뒤쪽에 심볼이 체크되는것을 방지하기 위해서...
  3. 문자열을 돌면서 심볼의 해당 값만큼 합을 구하고 반복되는 심볼은 반복되는 만큼 더한다.

JS CODE

/**
 * @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
};
profile
Hi there 👋

0개의 댓글