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

짝수 자리와 홀수 자리 숫자 합의 차이 구하기 - JavaScript

이번 글에서는 하나의 숫자를 입력받아, 짝수 번째 자리(인덱스 0, 2, 4, ...)에 있는 숫자들의 합과 홀수 번째 자리(인덱스 1, 3, 5, ...)에 있는 숫자들의 합 사이의 차이를 반환하는 JavaScript 함수를 작성해 보겠습니다.

문제 이해하기

숫자를 오른쪽 끝 자릿수부터 0번 인덱스로 시작해 왼쪽 방향으로 하나씩 번호를 매깁니다. 그다음 짝수 인덱스 자릿수는 더하고, 홀수 인덱스 자릿수는 뺀 뒤, 최종 결과의 절댓값을 반환하면 됩니다.

예를 들어 숫자가 345336이라면 다음과 같습니다.

  • 오른쪽부터 자릿수: 6, 3, 3, 5, 4, 3
  • 짝수 인덱스(0, 2, 4) 자릿수의 합: 6 + 3 + 4 = 13
  • 홀수 인덱스(1, 3, 5) 자릿수의 합: 3 + 5 + 3 = 11
  • 두 합의 차이: |13 − 11| = 2

예제 코드

const num = 345336;

const evenOddDifference = (num) => {
  let res = 0;
  let ind = 0;
  while (num > 0) {
    const digit = num % 10;
    // 짝수 인덱스 자릿수는 더하고, 홀수 인덱스 자릿수는 뺍니다
    res += ind % 2 === 0 ? digit : -digit;
    num = Math.floor(num / 10);
    ind++;
  }
  return Math.abs(res);
};

console.log(evenOddDifference(num));

출력 결과

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

2

코드 설명

  • num % 10: 현재 숫자의 가장 오른쪽 자릿수를 추출합니다.
  • Math.floor(num / 10): 이미 처리한 마지막 자릿수를 제거해 다음 자릿수로 이동합니다.
  • ind: 현재 처리 중인 자릿수의 인덱스를 나타내며, 한 자릿수를 처리할 때마다 1씩 증가합니다.
  • Math.abs(res): 짝수 자리 합에서 홀수 자리 합을 뺀 값이 음수가 될 수 있으므로 절댓값으로 변환해 반환합니다.

이 방식은 숫자를 문자열로 변환하지 않고도 산술 연산만으로 모든 자릿수를 순회할 수 있어 간결하고 효율적입니다.