❓문제
- 1 ~ 3,999 사이의 로마숫자를 인자로 받았을 때, 이를 아라비아 숫자로 바꾸는 로직을 구현
- 로마자는 각각 아래와 같이 대응하며,
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1,000
일반적인 로마숫자 변환 방식을 따릅니다. (ex. XXVII = 27, CDLIX = 459)
function romanToNum (s) { };
🔓 (문제 파악) 주어진 Symbol과 Value를 함수 인자와 비교할 수 있어야 한다.
🔑 (해결 방안) Symbol(key
)과 Value(value
)로 이루어진 프로퍼티를 담은 객체를 선언한다.
function romanToNum(s) {
const roman = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
}
🔓 (문제 파악) 로마숫자를 아라비아 숫자로 바꿀 때의 규칙성 또는 공식을 파악한다.
🔑 (해결 방안)
🔓 (문제 파악) 파악한 규칙성을 바탕으로 주어진 로마숫자를 변환한다.
🔑 (해결 방안)
function romanToNum(s) {
const roman = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
let result = 0;
for (i=0; i < s.length; i++) {
roman[s[i]] < roman [s[i+1]]
? result -= roman[s[i]]
: result += roman[s[i]];
};
// 연속되는 두 로마숫자의 단위를 비교하며, 조건에 따라 덧셈과 뺄셈을 argument의 길이만큼 반복한다.
return result;
}
function romanToNum(s) {
const roman = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
let result = 0;
for (i=0; i < s.length; i++) {
roman[s[i]] < roman [s[i+1]]
? result -= roman[s[i]]
: result += roman[s[i]];
};
return result;
}
console.log(romanToNum('XXVII')); // 27
console.log(romanToNum('CDLIX')); // 459