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

JavaScript로 숫자와 그 숫자를 뒤집은 값의 차이 구하기

이번 글에서는 숫자를 인자로 하나 받아서, 그 숫자를 뒤집은 값과 원래 숫자 사이의 차이(절댓값)를 계산하는 JavaScript 함수를 작성해 보겠습니다.

문제 정의

함수는 다음과 같이 동작해야 합니다.

  • 인자로 받은 숫자의 자릿수를 뒤집은 값을 계산합니다.
  • 원래 숫자와 뒤집은 숫자 사이의 차이를 절댓값으로 반환합니다.

예시

입력 숫자가 다음과 같다고 가정해 봅시다.

const num = 45467;

이 숫자를 뒤집으면 76454가 됩니다.

따라서 함수의 출력 결과는 다음과 같습니다.

76454 - 45467 = 30987

재귀를 활용한 해결 방법

숫자를 뒤집는 가장 간결한 방법 중 하나는 재귀(recursion)를 활용하는 것입니다. 숫자를 10으로 나눈 나머지로 마지막 자릿수를 추출하고, 결과 값에 10을 곱한 뒤 더하는 방식으로 자릿수를 하나씩 옮겨 담습니다.

const num = 45467;

// 숫자를 뒤집는 재귀 함수
const findReversed = (num, res = 0) => {
    if (num) {
        // 마지막 자릿수를 추출해 결과 값에 이어 붙임
        return findReversed(Math.floor(num / 10), (res * 10) + (num % 10));
    }
    return res;
};

// 원래 숫자와 뒤집은 숫자의 차이를 계산하는 함수
const findDifference = num => {
    const reversed = findReversed(num);
    const difference = Math.abs(num - reversed);
    return difference;
};

console.log(findDifference(num));

동작 원리 살펴보기

findReversed 함수는 다음 단계로 진행됩니다.

  • num % 10: 현재 숫자의 마지막 자릿수를 구합니다.
  • res * 10 + (num % 10): 기존 결과를 한 자릿수 밀고 새 자릿수를 추가합니다.
  • Math.floor(num / 10): 처리한 마지막 자릿수를 제거하고 재귀 호출을 계속합니다.
  • num이 0이 되면 누적된 res, 즉 뒤집힌 숫자를 반환합니다.

마지막으로 findDifference 함수는 Math.abs()를 사용해 두 숫자의 차이를 항상 양수로 반환하므로, 어떤 순서로 비교하더라도 올바른 절댓값 차이를 얻을 수 있습니다.

출력 결과

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

30987