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

JavaScript로 배열의 홀수·짝수 인덱스 요소 합 차이 구하기

문제 이해하기

숫자 배열을 입력받아, 홀수 인덱스에 위치한 요소들의 합과 짝수 인덱스에 위치한 요소들의 합 사이의 차이를 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어 다음과 같은 배열이 주어졌다고 가정해 보겠습니다.

const arr = [3, 6, 34, 12, 6, 8, 8, 5, 6, 8];

이 경우 함수는 짝수 인덱스(0, 2, 4, ...) 요소들의 합에서 홀수 인덱스(1, 3, 5, ...) 요소들의 합을 뺀 값의 절댓값을 반환해야 합니다.

풀이 접근 방식

배열을 처음부터 끝까지 순회하면서 현재 인덱스가 짝수인지 홀수인지 판별합니다. 짝수 인덱스라면 누적 변수에 해당 요소를 더하고, 홀수 인덱스라면 빼줍니다. 모든 순회가 끝난 후 Math.abs()를 사용해 절댓값을 반환하면 두 합의 차이를 얻을 수 있습니다.

예제 코드

const arr = [3, 6, 34, 12, 6, 8, 8, 5, 6, 8];
const oddEvenDiff = arr => {
   let diff = 0;
   for(let i = 0; i < arr.length; i++){
      if(i % 2 === 0){
         diff += arr[i];
      }else{
         diff -= arr[i]
      };
   };
   return Math.abs(diff);
};
console.log(oddEvenDiff(arr));

실행 결과

콘솔에 다음과 같은 출력이 나타납니다.

18

동작 원리 상세 설명

위 코드가 어떻게 18이라는 결과를 도출하는지 단계별로 살펴보겠습니다.

  • 짝수 인덱스(0, 2, 4, 6, 8) 요소들의 합: 3 + 34 + 6 + 8 + 6 = 57
  • 홀수 인덱스(1, 3, 5, 7, 9) 요소들의 합: 6 + 12 + 8 + 5 + 8 = 39
  • 두 합의 차이: |57 − 39| = 18

루프 내부에서는 i % 2 === 0 조건으로 인덱스의 홀짝 여부를 확인합니다. 나머지 연산자(%)를 활용한 이 방식은 시간 복잡도 O(n)으로 배열을 한 번만 순회하므로 매우 효율적입니다. 또한 Math.abs()를 적용했기 때문에 어느 쪽 합이 더 크더라도 항상 양수인 차이 값을 얻을 수 있다는 장점이 있습니다.