이번 글에서는 길이가 같은 두 개의 배열을 입력받아, 각 배열에서 같은 인덱스에 위치한 값끼리 곱한 후, 그 결과들을 모두 더하는 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) 계산 등 다양한 수학적 문제에서 자주 활용되므로, 두 가지 방법 모두 익혀두면 유용합니다.