문제 이해하기
숫자 하나를 인자로 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 먼저 해당 숫자의 팩토리얼(계승)을 계산한 뒤, 계산된 팩토리얼 값의 각 자릿수를 모두 더한 합을 반환해야 합니다.
예를 들어 숫자 6이 주어지면, 팩토리얼은 720이며, 따라서 기대되는 출력값은 7 + 2 + 0 = 9입니다.
예제 코드
const factorial = (num) => {
if (num == 1) return 1;
return num * factorial(num - 1);
};
const sumOfDigits = (num = 1) => {
const str = num.toString();
let sum = 0;
for (var x = -1; ++x < str.length;) {
sum += +str[x];
}
return sum;
};
const sumFactorialDigits = num => sumOfDigits(factorial(num));
console.log(sumFactorialDigits(6));코드 설명
factorial 함수: 재귀 호출을 사용해 전달받은 숫자의 팩토리얼을 계산합니다. num이 1이면 1을 반환하고, 그렇지 않으면 num에 (num - 1)의 팩토리얼 값을 곱합니다.
sumOfDigits 함수: 숫자를 문자열로 변환한 뒤 반복문으로 각 문자를 숫자로 바꾸어 더합니다. 단항 연산자 '+'를 사용해 문자를 숫자로 형변환하는 점이 특징입니다.
sumFactorialDigits 함수: 위의 두 함수를 조합하여, 팩토리얼 계산 결과의 자릿수 합을 한 번에 구합니다.
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
9