본문 바로가기
LeetCode/코딩 테스트 스터디 1주차

[LeetCode] 13. Roman to Integer 풀이

by inwoo1324 2022. 7. 10.

0. 문제

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

 

Roman to Integer - 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

 

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

● 로마 숫자는 I, V, X, L, C, D, M의 7가지 기호로 표시
● 로마 숫자는 일반적으로 왼쪽에서 오른쪽으로 큰 것에서 작은 것 순으로 표기
● 4, 9는 예외 처리
● V(5)와 X(10) 앞에 배치 I하여 4와 9를 만든다.
● L(50)과 C(100) 앞에 배치 X하여 40과 90을 만든다.
● D(500)과 M(1000) 앞에 배치 C하여 400과 900을 만든다.


#1
Input: s = "III"
Output: 3
#2
Input: s = "LVIII"
Output: 58
#3
Input: s = "MCMXCIV"
Output: 1994

1.언어

자바스크립트(JavaScript)

 

 

2. 문제 풀이

var romanToInt = function(s) {
    const map={ I : 1,    V : 5,    X : 10,   L : 50,
          C : 100,  D : 500,  M : 1000,         };
    let sum=0;
    for (let i=0; i<s.length; i++){
        if (map[s[i]] < map[s[i+1]]){
            sum += map[s[i+1]] - map[s[i]];
            i++;
        }else sum += map[s[i]];
    }
    return sum;
};
Runtime: 145 ms, faster than 85.67% of JavaScript online submissions for Roman to Integer.
Memory Usage: 47.6 MB, less than 47.17% of JavaScript online submissions for Roman to Integer.

 

처음에 문제를 똑바로 안 읽고 4와 9의 존재를 모르고 틀렸다....

4와 9 처리 방법은 낮은 수가 앞에 오고 입력값은 내림차순이니 조건식 ( i < i+1 ) 로 처리하여 해결했다.