상세 컨텐츠

본문 제목

[LeetCode] Roman to Integer

Coding/알고리즘

by hwlink 2022. 2. 6. 17:41

본문

I로마 숫자는 , V, X, L, C, D의 7가지 기호로 표시됩니다

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

예를 들어,  로마 숫자로 쓰는데 둘만 더하면 됩니다 2. 는 로 작성됩니다  . 숫자 는 , 즉 로 기록됩니다 .II12XIIX + II27XXVIIXX + V + II

로마 숫자는 일반적으로 왼쪽에서 오른쪽으로 큰 것에서 작은 것 순으로 표기합니다. 그러나 4의 숫자는 가 아닙니다 IIII. 대신 숫자 4는 로 기록됩니다 IV. 1은 5보다 앞에 있기 때문에 빼서 4가 됩니다. 로 쓰여진 숫자 9에도 동일한 원칙이 적용됩니다 IX. 빼기가 사용되는 6가지 경우가 있습니다.

  • IV(5)와 (10) 앞에 배치 X하여 4와 9를 만들 수 있습니다. 
  • XL(50)과 (100) 앞에 배치 C하여 40과 90을 만들 수 있습니다. 
  • CD(500)과 (1000) 앞에 배치 M하여 400과 900을 만들 수 있습니다.

로마 숫자가 주어지면 그것을 정수로 변환하십시오.

 

Example 1:

Input: s = "III"
Output: 3
Explanation: III = 3.

Example 2:

Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Example 3:

Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

 

 

var romanToInt = function(strs) {
    const map = { 
      'I': 1,
      'V': 5, 
      'X': 10, 
      'L': 50, 
      'C': 100, 
      'D': 500,
      'M': 1000};
   
  let result = 0;
    
    for(let i = 0; i < strs.length; i++) {
        const curr = map[strs[i]], next = map[strs[i+1]];
        curr < next
        ? result -= curr
        : result += curr;
    }
  
    return result;    
};

 

1. 로마자로 반환 할 값들을 객체 키, 밸류로 설정해준다.

2. 결과값을 담을 Result 변수를 만든다.

3. 인자로 들어로는 문자열(strs)의 길이 만큼 반목문 돌려주고  객체괄호접근법을 이용하여 curr, next에 담아준다.

4. 로마숫자기호 특성 ex:IV 5-1 파악하여 앞 요소보다 뒤 요소가 크다면 빼주고, 반대라면 더해준다.

관련글 더보기