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

JavaScript에서 숫자의 자릿수 간 최대 차이 구하기

이번 글에서는 숫자를 입력받아 그 숫자를 이루는 자릿수 중 서로 다른 두 자릿수 사이의 최대 차이를 반환하는 JavaScript 함수를 작성해 보겠습니다.

좀 더 쉽게 설명하면, 숫자를 구성하는 자릿수 중 가장 큰 자릿수와 가장 작은 자릿수의 차이를 계산하여 반환하면 됩니다.

예시

입력된 숫자가 654646이라고 가정해 보겠습니다.

  • 가장 작은 자릿수: 4
  • 가장 큰 자릿수: 6

따라서 함수가 반환해야 하는 결과값은 6 - 4 = 2입니다.

숫자: 654646
최소 자릿수: 4
최대 자릿수: 6
 출력 결과: 2

구현 방법

이 문제는 재귀(Recursion)를 활용하면 간결하게 해결할 수 있습니다. 숫자의 마지막 자릿수를 하나씩 추출하면서 지금까지 확인한 최솟값과 최댓값을 매개변수로 전달하고, 모든 자릿수를 확인한 뒤 최댓값과 최솟값의 차이를 반환하는 방식입니다.

해당 로직을 구현한 코드는 다음과 같습니다.

const num = 654646;

const maxDifference = (num, min = Infinity, max = -Infinity) => {
    if(num){
        // 마지막 자릿수 추출
        const digit = num % 10;
        // 남은 숫자와 함께 최솟값, 최댓값을 갱신하여 재귀 호출
        return maxDifference(Math.floor(num / 10),
        Math.min(digit, min),
        Math.max(digit, max));
    };
    // 모든 자릿수를 확인한 후 최대 차이 반환
    return max - min;
};

console.log(maxDifference(num));

코드 동작 원리

  1. num % 10을 통해 현재 숫자의 가장 마지막 자릿수를 추출합니다.
  2. Math.floor(num / 10)으로 마지막 자릿수를 제거한 나머지 숫자를 만들어 재귀적으로 함수를 다시 호출합니다.
  3. 재귀 호출 시 Math.min()Math.max()를 사용해 지금까지 발견한 최솟값과 최댓값을 계속 갱신합니다.
  4. num이 0이 되어 모든 자릿수를 확인하면, 누적된 maxmin의 차이를 최종 결과로 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

2

이처럼 재귀 함수와 기본 매개변수(Default Parameter)를 활용하면 반복문 없이도 숫자의 자릿수 간 최대 차이를 깔끔하게 계산할 수 있습니다.