romanNumerals.js
Codewars 알고리즘 풀이
Problem
- Create a function taking a positive integer as its parameter and returning a string containing the Roman Numeral representation of that integer.
- 양의 정수를 매개변수로 사용한다.
- 해당 정수를 로마 숫자 표기법 문자열로 반환한다.
- Remember that there can’t be more than 3 identical symbols in a row.
- 한 행에 3개 이상의 동일한 기호를 사용할 수 없다.
For example:
1990 => MCMXC
1000: M
900: CM
90: XC
Solution 01
function romanNumerals(n) {
const roman = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
const decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
let result = '';
decimal.map((i, index) => {
while (n >= i) {
result += roman[index];
n -= i;
}
});
return result;
}
romanNumerals(1); // I
romanNumerals(2); // II
romanNumerals(3); // III
romanNumerals(4); // IV
romanNumerals(5); // V
romanNumerals(6); // VI
romanNumerals(7); // VII
romanNumerals(8); // VIII
romanNumerals(9); // IX
romanNumerals(10); // X
romanNumerals(11); // XI
romanNumerals(12); // XII
romanNumerals(1990); // MCMXC
Solution 02
function romanNumerals(n) {
const roman = {
M: 1000,
CM: 900,
D: 500,
CD: 400,
C: 100,
XC: 90,
L: 50,
XL: 40,
X: 10,
IX: 9,
V: 5,
IV: 4,
I: 1
};
let result = '';
while (n > 0) {
for (i in roman) {
if (roman[i] <= n) {
result += i;
n -= roman[i];
break;
}
}
}
return result;
}
romanNumerals(1); // I
romanNumerals(2); // II
romanNumerals(3); // III
romanNumerals(4); // IV
romanNumerals(5); // V
romanNumerals(6); // VI
romanNumerals(7); // VII
romanNumerals(8); // VIII
romanNumerals(9); // IX
romanNumerals(10); // X
romanNumerals(11); // XI
romanNumerals(12); // XII
romanNumerals(1990); // MCMXC