문제설명
- I, V, X, L, C, D, M 까지 각각의 로마 문자에 해당하는 정수값이 있음
- 같은 문자를 나열해 더하거나 정수값이 큰 문자 다음 작은 문자를 나열해 둘을 더함
- 하지만 4와 9를 표현하려면 IV, IX처럼 정수값이 작은 문자가 앞에 와 두 값을 뺌
- 입력한 문자열 s를 정수값으로 반환
- 참고자료

제한조건
- 문자열 s의 길이는 1이상 15이하
- 문자열 s의 정수값 범위는 1이상 3999이하
풀이
var romanToInt = function(s) {
const alphabet = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
const sArr = s.split('');
const nArr = [];
let alphabetSum = 0;
sArr.map((value,idx)=>{
if(sArr[idx] !== sArr[idx+1]){
if(alphabet[sArr[idx]] < alphabet[sArr[idx+1]]){
alphabetSum += alphabet[value];
nArr.push(alphabetSum * -1);
alphabetSum = 0;
}
else{
alphabetSum += alphabet[value];
nArr.push(alphabetSum);
alphabetSum = 0;
}
}
else
alphabetSum += alphabet[value];
});
return nArr.reduce((sum,cur)=> sum + cur,0);
};
체크포인트
- 문자열 인덱스 범위 밖에서 요소를 찾을 경우 undefined를 반환
- reduce 메소드로 정수합 누적 계산