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

두 숫자의 자릿수 거리(Digit Distance) 구하기 - JavaScript

이번 글에서는 두 개의 숫자 ab를 입력받아 두 숫자 사이의 자릿수 거리(digit distance)를 반환하는 JavaScript 함수를 작성해 보겠습니다.

자릿수 거리란?

두 숫자의 자릿수 거리는 각 자리에 해당하는 숫자들끼리의 차이를 절댓값으로 구한 뒤, 이를 모두 더한 값입니다.

예를 들어 다음과 같은 두 숫자가 있다고 가정해 보겠습니다.

345
678

이 경우 자릿수 거리는 다음과 같이 계산됩니다.

|3-6| + |4-7| + |5-8| = 3 + 3 + 3 = 9

구현 방법

두 숫자를 문자열로 변환한 후, 각 자리의 숫자를 하나씩 비교하며 차이의 절댓값을 누적하면 됩니다. 두 숫자의 길이가 다를 경우에도 올바르게 동작하도록 반복 범위를 설정하는 것이 중요합니다.

다음은 전체 코드입니다.

const num1 = 345;
const num2 = 678;

const digitDistance = (a, b) => {
    const aStr = String(a);
    const bStr = String(b);
    let diff = 0;
    
    // 두 문자열 중 더 긴 길이만큼 반복하여 자릿수를 비교
    const maxLen = Math.max(aStr.length, bStr.length);
    
    for (let i = 0; i < maxLen; i++) {
        diff += Math.abs(+(aStr[i] || 0) - +(bStr[i] || 0));
    }
    
    return diff;
};

console.log(digitDistance(num1, num2));

코드 설명

  • String()을 사용해 숫자를 문자열로 변환하면 인덱스로 각 자릿수에 쉽게 접근할 수 있습니다.
  • Math.max()로 두 문자열 중 더 긴 길이를 구해 반복 횟수를 정하므로, 자릿수가 다른 숫자(예: 1234와 99)도 정확하게 처리할 수 있습니다.
  • aStr[i] || 0 부분은 존재하지 않는 자릿수를 0으로 처리해 오류 없이 계산이 진행되도록 합니다.
  • Math.abs()를 통해 각 자릿수 차이의 절댓값을 구하고 이를 diff 변수에 누적합니다.

출력 결과

콘솔에서 실행하면 다음과 같은 결과가 출력됩니다.

9

마무리

이처럼 숫자를 문자열로 변환하고 각 자릿수를 순회하며 비교하는 간단한 방식으로 자릿수 거리를 손쉽게 구할 수 있습니다. 자릿수가 다른 숫자를 처리하는 로직까지 포함하면 더 견고한 함수를 만들 수 있습니다.