[CodeKata] romanToNum 함수 구현하기
글 작성자: 개발자 올라프
문제
로마자에서 숫자로 바꾸기
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로 표현한다.
- IV=4, IX=9, XL=40, XC=90, CD=400, CM=900
const roman = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
const romanToNum = (romanNum) => {
const romanArr = romanNum.split(""); // 배열로 전환
const numArr = romanArr.map(e => roman[e]); // 숫자로 전환
let sumArr = 0; // 합계 저장할 변수 선언
for(let i=0; i<numArr.length; i++) {
if(numArr[i] < numArr[i+1]) {
sumArr += (numArr[i+1] - numArr[i]);
i++
} else {
sumArr += numArr[i];
}
}
return sumArr;
}
로마자는 왼쪽부터 차례대로 더한 값이 나온다. 만약 좌측값이 우측값보다 더 작은 경우(ex. IV, IX 등)에만 우측에서 좌측값을 뺀 결과가 나온다. 이러한 결과까지 도달하기는 쉬웠으나 로마 숫자를 어떻게 숫자로 변환시킬지 생각하는데 시간이 오래 걸렸다. 로마 숫자를 객체로 선언하고 map()을 사용해서 쉽게 변환할 수 있었다.
'⭐️ Memory > 교육수강 회고' 카테고리의 다른 글
[CodeKata] isValid 함수 구현하기 (0) | 2022.05.19 |
---|---|
[CodeKata] moreThanHalf 함수 구현하기 (0) | 2022.05.17 |
React 댓글기능 구현하기 (1) | 2022.05.15 |
위코드 3주차 회고 - React (0) | 2022.05.15 |
[CodeKata] getPrefix 함수 구현하기 (0) | 2022.05.13 |
댓글
이 글 공유하기
다른 글
-
[CodeKata] isValid 함수 구현하기
[CodeKata] isValid 함수 구현하기
2022.05.19 -
[CodeKata] moreThanHalf 함수 구현하기
[CodeKata] moreThanHalf 함수 구현하기
2022.05.17 -
React 댓글기능 구현하기
React 댓글기능 구현하기
2022.05.15 -
위코드 3주차 회고 - React
위코드 3주차 회고 - React
2022.05.15