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

JavaScript로 숫자의 각 자릿수 곱 구하기

이번 글에서는 하나의 숫자를 입력받아 그 숫자를 이루는 모든 자릿수의 곱을 계산하는 JavaScript 함수를 만들어 보겠습니다.

여기서 중요한 규칙은 하나 있습니다. 숫자에 0이 포함되어 있다면, 해당 자릿수는 곱셈 시 1로 취급해야 한다는 점입니다.

문제 이해하기

예를 들어 입력값이 다음과 같다고 가정해 봅시다.

5720

이 숫자의 자릿수는 5, 7, 2, 0 입니다. 마지막 자릿수인 0은 규칙에 따라 1로 대체되어 곱해지므로, 계산 결과는 다음과 같습니다.

5 × 7 × 2 × 1 = 70

따라서 기대하는 출력값은 70입니다.

재귀 함수로 해결하기

이 문제는 재귀(Recursion)를 활용하면 매우 깔끔하게 해결할 수 있습니다. 숫자를 10으로 나눈 몫과 나머지를 반복적으로 활용하여 마지막 자릿수부터 차례대로 곱해 나가는 방식입니다.

예제 코드

const num = 5720;

const recursiveProduct = (num, res = 1) => {
    if(num){
        return recursiveProduct(Math.floor(num / 10), res * (num % 10 || 1));
    }
    return res;
};

console.log(recursiveProduct(num));

코드 동작 원리

  • res = 1: 결과값을 누적할 변수로, 초기값은 곱셈의 항등원인 1입니다.
  • num % 10: 현재 숫자의 마지막 자릿수를 추출합니다.
  • (num % 10 || 1): 마지막 자릿수가 0일 경우 falsy 값으로 평가되므로, 논리 OR 연산자(||)를 통해 자동으로 1로 대체됩니다.
  • Math.floor(num / 10): 마지막 자릿수를 제거한 나머지 부분을 재귀 호출에 전달합니다.
  • 숫자가 0이 되면 재귀가 종료되고, 지금까지 누적된 곱셈 결과가 반환됩니다.

실행 결과

위 코드를 콘솔에서 실행하면 다음과 같은 출력을 확인할 수 있습니다.

70

마무리

이처럼 재귀 함수와 논리 OR 연산자를 조합하면, 0이 포함된 숫자도 손쉽게 처리하면서 각 자릿수의 곱을 구할 수 있습니다. 코드가 짧고 직관적이라 실무에서도 유용하게 활용할 수 있는 패턴입니다.