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

JavaScript로 두 숫자의 자릿수 거리(절대 차이의 합) 계산하기

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

자릿수 거리란?

자릿수 거리란 두 숫자에서 서로 대응하는 자릿수끼리의 차이에 절댓값을 취한 뒤, 그 값들을 모두 더한 합계를 의미합니다.

예시

예를 들어 두 숫자가 345678이라고 가정해 보겠습니다.

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

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

따라서 두 숫자의 자릿수 거리는 9가 됩니다.

구현 코드

이 기능을 수행하는 함수는 다음과 같이 작성할 수 있습니다.

const num1 = 345;
const num2 = 678;

const digitDistance = (a, b) => {
  const aStr = String(a);
  const bStr = String(b);
  let diff = 0;
  for (let i = 0; i < aStr.length && i < bStr.length; i++) {
    diff += Math.abs(+(aStr[i] || 0) - +(bStr[i] || 0));
  }
  return diff;
};

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

실행 결과

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

9

코드 동작 원리

함수의 동작 과정을 단계별로 살펴보면 다음과 같습니다.

  • String()을 사용해 두 숫자를 문자열로 변환하면, 배열처럼 인덱스를 통해 각 자릿수에 접근할 수 있습니다.
  • 반복문을 돌면서 같은 위치에 있는 자릿수끼리 뺀 값에 Math.abs()로 절댓값을 취한 뒤 누적합니다.
  • 자릿수 앞에 단항 연산자 +를 붙이면 문자열 형태의 숫자가 다시 숫자 타입으로 변환됩니다.
  • 만약 두 숫자의 자릿수 개수가 다르다면, 반복 조건이 짧은 쪽 길이까지만 진행되므로 안전하게 처리됩니다. 필요하다면 반복 범위를 더 긴 쪽에 맞추고 없는 자릿수를 0으로 취급하도록 확장할 수도 있습니다.