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

JavaScript에서 두 배열의 요소를 곱한 뒤 합산하는 방법

이번 글에서는 길이가 같은 두 개의 배열을 입력받아, 각 배열에서 같은 인덱스에 위치한 값끼리 곱한 후, 그 결과들을 모두 더하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

문제 이해하기

예를 들어 다음과 같은 두 개의 배열이 입력으로 주어졌다고 가정해 보겠습니다.

const arr1 = [2, 3, 4, 5];
const arr2 = [4, 3, 3, 1];

이 경우 각 인덱스별로 값을 곱한 뒤 모두 더하면 결과는 34가 되어야 합니다.

(4*2 + 3*3 + 4*3 + 5*1) = 34

구현 방법

가장 기본적인 접근 방식은 for 반복문을 사용하여 두 배열의 같은 인덱스에 있는 요소를 하나씩 꺼내 곱하고, 그 값을 누적 변수에 더하는 것입니다. 코드는 다음과 같습니다.

const arr1 = [2, 3, 4, 5];
const arr2 = [4, 3, 3, 1];

const produceAndAdd = (arr1 = [], arr2 = []) => {
    let sum = 0;
    for(let i = 0; i < arr1.length; i++) {
        const product = (arr1[i] * arr2[i]);
        sum += product;
    };
    return sum;
};

console.log(produceAndAdd(arr1, arr2));

위 코드의 동작 원리를 단계별로 살펴보면 다음과 같습니다.

  • 초기화: 합계를 저장할 변수 sum을 0으로 초기화합니다.
  • 반복 처리: 반복문을 통해 두 배열의 같은 위치(i번째)에 있는 요소를 곱합니다.
  • 누적: 곱한 결과를 sum에 계속 더해 나갑니다.
  • 반환: 반복이 끝나면 최종 합계를 반환합니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

34

추가 팁: reduce 활용하기

반복문 대신 배열의 reduce() 메서드를 사용하면 더 간결하게 표현할 수도 있습니다.

const produceAndAdd = (arr1 = [], arr2 = []) =>
    arr1.reduce((sum, num, i) => sum + num * arr2[i], 0);

console.log(produceAndAdd(arr1, arr2)); // 34

이처럼 두 배열의 대응 요소를 곱해 합산하는 연산은 벡터의 내적(dot product) 계산 등 다양한 수학적 문제에서 자주 활용되므로, 두 가지 방법 모두 익혀두면 유용합니다.