[Leet Code] Roman to Integer

Hemudi | Hemdi·2021년 11월 26일
0

🧨 코딩테스트

목록 보기
17/19
post-thumbnail

주어진 로마식 숫자를 10진수 정수로 변환


✳️ 제한사항


✳️ 예시

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


✳️ 내가 푼 코드

var romanToInt = function(s) {
    const romanSymbol= {
        I: 1,
        V: 5,
        X: 10,
        L: 50,
        C: 100,
        D: 500,
        M: 1000
    }

    return s.split("").reduceRight((acc, cur, i, arr)=>{
        if(i === arr.length -1) return romanSymbol[cur];

        if(romanSymbol[arr[i + 1]] > romanSymbol[cur]){
            return acc - romanSymbol[cur];
        }

        return acc + romanSymbol[cur];
    }, 0)
};

✳️ 생각 정리

  • 처음엔 어휴 이게 뭐야 했는데 풀다보니 재밌었다.
  • 오른쪽부터 순회를 하는게 편할거 같아서 reduceRight 를 써봤다.
  • 맨 처음 시작이면 그냥 반환하고 그 다음부터는 오른쪽 값과 비교해서 오른쪽이 더 크다면 누적값에서 현재 값을 빼줬다.
  • 크지 않으면 그냥 그대로 더하기!
profile
'햄디'로 현재 코드스쿼드 코코아 과정 수강 중 💻 (티스토리로 이전)

0개의 댓글

관련 채용 정보