문제
💡 로마자에서 숫자로 바꾸기
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 입니다.
풀이
function romanToNum(s){
const numObj = {
I : 1,
V : 5,
X : 10,
L : 50,
C : 100,
D : 500,
M : 1000
};
const arr = s.split("");
let sumValue = [''];
for(let i=0; i < s.length; i++){
if(Number(numObj[(arr[i])])<Number(numObj[(arr[i+1])])){
sumValue = Number(sumValue) - Number(numObj[(arr[i])]);
} else {
sumValue = Number(sumValue) + Number(numObj[(arr[i])])
}
}
return sumValue;
};
s = "III";
console.log(romanToNum(s));
결과
node v12.16.1
✅ test1
✅ test2
✅ test3
✅ test4
All tests have passed 4/4
'🏋️♀️ Code Practice' 카테고리의 다른 글
[JS] 중복되는 시작 단어(Prefix) 찾기 (0) | 2022.05.14 |
---|---|
[JS] 문자 뒤집기 (0) | 2022.05.14 |
[JS] 특정 수를 더한 배열 출력하기 (0) | 2022.05.10 |
댓글