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

JavaScript로 배열의 연속된 두 요소 합을 계산해 새 배열 만들기

문제 이해하기

숫자로 이루어진 배열을 입력받아, 원본 배열에서 인접한 두 요소씩 짝지어 그 합을 담은 새 배열을 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어, 입력 배열이 다음과 같다면 −

const arr = [3, 6, 3, 87, 3, 23, 2, 2, 6, 8];

출력 결과는 다음과 같아야 합니다 −

const output = [9, 90, 26, 4, 14];

결과 배열의 각 값은 원본 배열에서 두 개씩 묶은 요소들의 합입니다. 즉, 3+6=9, 3+87=90, 3+23=26, 2+2=4, 6+8=14가 됩니다.

해결 방법: 코드 예제

이 문제를 해결하는 코드는 다음과 같습니다 −

const arr = [3, 6, 3, 87, 3, 23, 2, 2, 6, 8];
const twiceSum = arr => {
   const res = [];
   for(let i = 0; i < arr.length; i += 2){
      res.push(arr[i] + (arr[i+1] || 0));
   };
   return res;
};
console.log(twiceSum(arr));

코드 동작 원리

코드의 핵심 로직을 단계별로 살펴보면 다음과 같습니다.

  • 2칸씩 건너뛰는 반복문: for 루프의 인덱스 변수 i가 0부터 시작하여 매번 2씩 증가하므로, 배열을 두 요소 단위로 순회할 수 있습니다.
  • 인접 요소 합산: 각 반복에서 현재 요소 arr[i]와 바로 다음 요소 arr[i+1]을 더한 값을 결과 배열 res에 push합니다.
  • 홀수 길이 배열 처리: 배열 길이가 홀수라면 마지막 요소는 짝이 되는 다음 요소가 없어 undefined가 됩니다. 이때 (arr[i+1] || 0) 표현식이 undefined를 0으로 대체해 주므로, 마지막 홀수 요소는 그대로 더해져 오류 없이 안전하게 동작합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다 −

[ 9, 90, 26, 4, 14 ]

이처럼 간단한 반복문 하나만으로 배열의 연속된 두 요소 합을 손쉽게 계산할 수 있습니다. 필요하다면 화살표 함수 대신 일반 함수로 작성하거나, reduce 같은 고차 함수를 활용하는 방식으로도 응용할 수 있습니다.