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

JavaScript로 숫자 자릿수를 재배열해 만들 수 있는 최소 숫자와의 최대 차이 구하기

이번 글에서는 양의 정수 하나를 입력받아, 그 숫자의 자릿수를 재배열하여 만들 수 있는 가장 작은 숫자와 원래 숫자 사이의 차이를 계산하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

문제 이해

함수는 양의 정수를 유일한 입력값으로 받으며, 해당 숫자의 자릿수를 임의로 재배열했을 때 만들어질 수 있는 최소 숫자를 찾은 뒤, 원래 숫자에서 그 값을 뺀 결과를 반환해야 합니다.

예를 들어 입력 숫자가 820이라고 가정해 보겠습니다.

  • 820의 자릿수(8, 2, 0)를 오름차순으로 정렬하면 '028', 즉 28이 됩니다.
  • 따라서 함수가 반환해야 하는 값은 다음과 같습니다.
820 - 28 = 792

구현 코드

const num = 820;
const maximumDifference = (num) => {
    // 숫자를 문자열로 변환
    const numStr = '' + num;
    // 각 자릿수를 배열로 분리한 뒤 오름차순 정렬
    const sorted = numStr.split('').sort();
    // 정렬된 자릿수를 다시 합쳐 숫자로 변환
    const smallest = +sorted.join('');
    // 원래 숫자에서 최소 숫자를 뺀 값을 반환
    return num - smallest;
};
console.log(maximumDifference(num));

코드 동작 원리

  1. 문자열 변환: 숫자에 빈 문자열을 더해('' + num) 문자열로 변환합니다.
  2. 자릿수 분리 및 정렬: split('')으로 한 글자씩 배열로 나눈 후, sort()를 사용해 오름차순으로 정렬합니다. 문자열 기본 정렬이므로 별도의 비교 함수 없이도 자릿수가 작은 순서대로 배치됩니다.
  3. 최소 숫자 생성: 정렬된 배열을 join('')으로 다시 하나의 문자열로 합친 뒤, 단항 덧셈 연산자(+)를 통해 숫자로 변환합니다. 앞자리가 0인 경우(예: '028')에도 숫자 변환 시 자동으로 처리됩니다.
  4. 차이 계산: 원래 숫자에서 최소 숫자를 빼면 요구되는 최대 차이가 됩니다.

출력 결과

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

792