5000미만의 아라비아숫자 -> 로마자 변환 로직입니다.
분명 코드를 더 줄일수도 있을거 같은데 잘 떠오르지 않네요..
더 줄이는게 가능하신 분 도움! 주세요!
var roman = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];
var rs = '';
var parseRoman = function (arabic) {
var firstNum = parseInt(arabic.toString().substr(0, 1));
var rIdx = (firstNum >= 5 ? arabic.toString().length * 2 - 1 : arabic.toString().length * 2 - 2);
var rCnt = arabic.toString().substr(0, 1);
if ((firstNum + 1) % 5 == 0 && arabic < 4000) {
rs += roman[rIdx - ((firstNum + 1) / 5 - 1)] + roman[rIdx + 1];
} else {
if (firstNum >= 5) {
rs += roman[rIdx];
rCnt -= 5;
}
for (var i = 0; i < rCnt; i++) {
rs += roman[rIdx];
}
}
if (rIdx > 0) {
parseRoman(arabic.toString().substr(1, arabic.toString().length - 1));
}
return rs;
}
console.log(parseRoman(4999));