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

JavaScript로 숫자의 교대 자릿수 합 차이 구하는 방법

이번 글에서는 하나의 숫자를 입력받아, 짝수 번째 자리에 있는 자릿수들의 합과 홀수 번째 자리에 있는 자릿수들의 합 사이의 차이를 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

문제 이해하기

예를 들어 숫자 123456이 주어졌다고 가정해 봅시다. 오른쪽 끝자리부터 세었을 때, 짝수 번째(0번째, 2번째, 4번째) 자릿수는 6, 4, 2이고 그 합은 12입니다. 홀수 번째(1번째, 3번째, 5번째) 자릿수는 5, 3, 1이고 그 합은 9입니다. 따라서 두 합의 차이는 |12 − 9| = 3이 됩니다.

접근 방법

이 문제는 재귀 함수를 사용하면 간단하게 해결할 수 있습니다.

  • 숫자를 10으로 나눈 나머지(num % 10)를 이용해 가장 뒤의 자릿수를 하나씩 추출합니다.
  • 현재 인덱스가 짝수면 결과값에 더하고, 홀수면 뺍니다.
  • 숫자를 10으로 나눈 몫(Math.floor(num / 10))으로 재귀 호출을 반복합니다.
  • 숫자가 0이 되면 누적된 값의 절댓값을 반환합니다.

구현 코드

const num = 123456;
const alternateDifference = (num, res = 0, ind = 0) => {
    if(num){
        if(ind % 2 === 0){
            res += num % 10;
        }else{
            res -= num % 10;
        };
        return alternateDifference(Math.floor(num / 10), res, ++ind);
    };
    return Math.abs(res);
};
console.log(alternateDifference(num));

실행 결과

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

3

코드 설명

함수 alternateDifference는 세 개의 매개변수를 받습니다.

  • num: 처리할 숫자
  • res: 지금까지 계산된 누적 차이 (기본값 0)
  • ind: 현재 처리 중인 자릿수의 위치 (기본값 0)

매번 재귀 호출될 때마다 마지막 자릿수를 추출하여 인덱스에 따라 더하거나 빼고, 숫자가 모두 소진되면 최종적으로 Math.abs()를 통해 절댓값을 반환합니다. 이렇게 하면 어떤 순서로 계산되었든 두 합의 차이가 항상 양수로 출력됩니다.