Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 숫자 자릿수의 곱과 합의 차이 구하기

이번 글에서는 양의 정수 하나를 인자로 받아, 그 숫자의 각 자릿수를 곱한 값더한 값의 차이(절댓값)를 반환하는 JavaScript 함수를 작성해 보겠습니다.

문제 이해하기

함수는 다음 순서로 동작해야 합니다.

1. 입력받은 숫자의 각 자릿수의 합을 구합니다.
2. 각 자릿수의 곱을 구합니다.
3. 곱과 합의 차이를 절댓값으로 반환합니다.

예시

입력 숫자가 다음과 같다고 가정해 보겠습니다.

const num = 12345;

각 자릿수의 합은 1 + 2 + 3 + 4 + 5 = 15이고, 곱은 1 × 2 × 3 × 4 × 5 = 120입니다. 따라서 두 값의 차이는 다음과 같습니다.

|120 − 15| = 105

즉, 기대되는 출력 결과는 105입니다.

구현 코드

재귀 함수를 활용하면 자릿수의 합과 곱을 깔끔하게 구할 수 있습니다. 아래는 전체 코드입니다.

const num = 12345;

// 각 자릿수의 곱을 재귀적으로 계산
const product = (num, res = 1) => {
    if(num){
        return product(Math.floor(num / 10), res * (num % 10));
    }
    return res;
};

// 각 자릿수의 합을 재귀적으로 계산
const sum = (num, res = 0) => {
    if(num){
        return sum(Math.floor(num / 10), res + (num % 10));
    }
    return res;
};

// 곱과 합의 차이(절댓값)를 반환
const productSumDifference = (num = 1) => {
    return Math.abs(product(num) - sum(num));
};

console.log(productSumDifference(num));

코드 설명

product 함수와 sum 함수는 동일한 재귀 패턴을 사용합니다. num % 10으로 마지막 자릿수를 추출하고, Math.floor(num / 10)으로 이미 처리한 자릿수를 제거하며 숫자가 0이 될 때까지 반복합니다. 곱을 구할 때는 초기값을 1로, 합을 구할 때는 0으로 설정하는 점만 다릅니다.

마지막으로 productSumDifference 함수가 두 결과의 차이를 Math.abs()로 절댓값 처리하여 반환합니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

105