로마자에서 숫자로 바꾸기
1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요. 로마 숫자를 숫자로 표기하면 다음과 같습니다.
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다. III = 3 XII = 12 XXVII = 27 입니다.
그런데 4를 표현할 때는 IIII가 아니라 IV 입니다. 뒤의 숫자에서 앞의 숫자를 빼주면 됩니다. 9는 IX입니다.
I는 V와 X앞에 와서 4, 9 X는 L, C앞에 와서 40, 90 C는 D, M앞에 와서 400, 900
우선 객체를 이용하여 key와 value값으로 만들어주고
반복문으로 값을 확인한뒤
일반 케이스와 예외 케이스를 생각하고 조건문을 작성한다.
//일반 케이스
III = 3 // 1+1+1
V = 5
VI = 6 // 5+1
LX = 60 // 50+10
//예외 케이스
IV = 4 //-1 + 5
IX = 9 //-1 + 10
XL = 40 //-10 + 50
XC = 90 //-10 + 100
조건문은 위 표와 같이
일반 케이스 (앞의 숫자 > 뒤의 숫자) 두의 값을 더하기
예외 케이스 (앞의 숫자 < 뒤의 숫자) 뒤의 숫자 - 앞의 숫자
function romanToNum(s) {
const roman = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
};
let num = 0;
for(let i=0; i<s.length; i++){
if(roman[s[i]] < roman[s[i+1]]){
num -= roman[s[i]]
} else {
num += roman[s[i]]
}
}
return num
}
romanToNumXXVII('XXVII')
//27