Javascript에서 로마 숫자 함수 작성
8046 단어 tutorialprogrammingjavascript
문제 설명
주어진 숫자의 로마 숫자를 반환하는 알고리즘을 작성하십시오.
예시:
roman(5) => V
해결책
먼저 숫자를 로마 숫자에 매핑하는 방법이 필요합니다.
이를 위해 간단한 개체를 사용할 수 있습니다. 우리가 매핑하는 숫자는 IV 형식(1 before 5)으로 작성된 가장 중요한 숫자 및 일부 숫자(예: 4)입니다.
키가 숫자이고 값이 해당 숫자인 객체는 다음과 같습니다.
const NUMERALS = {
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
}
끝 문자열에 추가할 숫자의 양을 결정하려면 개체의 각 숫자가 인수에 들어가는 횟수를 확인하고 필요한 경우 로마 숫자 문자열에 추가해야 합니다.
입력 숫자 15를 사용하는 예를 살펴보겠습니다.
(eg. 15 / 100) = 0
(15 / 10 = 1.5)
로마 숫자 문자열에 'X'를 추가합니다. 5/9 = 0.0...
를 사용합니다. 알고리즘 작성
1 단계:
빈 문자열 변수를 선언하고 개체의 모든 키를 반복하는 루프 블록을 작성합니다.
var str = '';
for (var i of Object.keys(NUMERALS)) {
...
}
2 단계:
루프 내에서 전달된 숫자를 각 숫자 값으로 나누어야 합니다.
var q = Math.floor(number / NUMERALS[i]);
여기서
Math.floor()
함수는 숫자가 내림되도록 합니다.3단계:
q
는 숫자 값이 인수에 들어가는 횟수이므로 숫자 값을 곱하고 숫자에서 빼야 합니다. 예를 들어 루프에서 개체의 숫자 값 10을 사용하고 인수가 35인 경우:var q = Math.floor(35/10) = 3;
number = 35 - (3 * 10) = 5;
따라서 다음 문장은 다음과 같습니다.
number -= q * NUMERALS[i];
4단계:
마지막으로 3단계
q
의 예를 사용하여 인수에서 값이 발생하는 횟수를 로마 숫자에 추가합니다. 따라서 문자열에 XXX
를 추가해야 합니다.str += i.repeat(q);
모두 끝났습니다!
완성된 함수는 다음과 같습니다. for 루프 외부에서 우리는 단순히 전체 문자열을 반환하여 완료합니다.
function roman (number) => {
var str = '';
for (var i of Object.keys(NUMERALS)) {
var q = Math.floor(number / NUMERALS[i]);
number -= q * NUMERALS[i];
str += i.repeat(q);
}
return str;
}
다음 단계:
읽어 주셔서 감사합니다 :)
연결:
Reference
이 문제에 관하여(Javascript에서 로마 숫자 함수 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jtlavs/writing-a-roman-numeral-function-in-javascript-4hno텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)