728x90
Problem
https://leetcode.com/problems/roman-to-integer/
Intuition
인수로 받는 텍스트를 split('')으로 쪼갠 배열을 루프로 돌면서 계산을 하는 방식을 생각했으나, 로직이 복잡해진다는 생각을 했다. 이보다 좀 더 간단한 방식으로 계산을 할 수 있지 않을까.
Approach
로마 숫자 로직 계산의 핵심은 예외 처리다. 이 예외 6개만 처리를 해주면 되기 때문에 이를 계산한 숫자로 바로 치환해주면 되지 않을까?
모든 수가 담긴 객체를 만들어서, 예외 숫자부터 '+num' 형식으로 치환해준 뒤, 마지막에 이 텍스트를 eval() 메소드로 계산해서 해결했다.
Code
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s) {
let input = s;
const dict = {
'IV': '+4',
'IX': '+9',
'XL': '+40',
'XC': '+90',
'CD': '+400',
'CM': '+900',
'I': '+1',
'V': '+5',
'X': '+10',
'L': '+50',
'C': '+100',
'D': '+500',
'M': '+1000'
};
const keys = Object.keys(dict);
for(let i = 0; i < keys.length; i++) {
input = input.replaceAll(keys[i], dict[keys[i]]);
}
return eval(input)
};
728x90
'Research > Coding Test' 카테고리의 다른 글
스택/큐_기능개발 (0) | 2023.03.21 |
---|---|
스택/큐_같은 숫자는 싫어 (0) | 2023.03.21 |
20. Valid Parentheses (0) | 2023.03.21 |
1. Two Sum (0) | 2023.03.19 |
724. Find Pivot Index (0) | 2023.03.19 |
댓글