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

JavaScript로 배열 요소의 역 인덱스 곱셈 합계 구하기

다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.

const arr = [3, 6, 7, 3, 1, 4, 4, 3, 6, 7];

이 배열에는 총 10개의 요소가 포함되어 있으므로, 마지막 요소의 인덱스는 9가 됩니다.

우리는 이러한 배열을 매개변수로 받아, 각 요소에 역방향 인덱스를 곱한 값들의 합계를 반환하는 함수를 작성해야 합니다.

위 예시를 기준으로 하면 계산식은 다음과 같습니다.

(9*3)+(8*6)+(7*7)+(6*3)+.... 배열 끝까지 반복

즉, 첫 번째 요소에는 9를 곱하고, 두 번째 요소에는 8을 곱하는 방식으로 뒤에서부터 거꾸로 세어가며 인덱스를 곱한 뒤 모두 더하는 것입니다.

예제 코드

const arr = [3, 6, 7, 3, 1, 4, 4, 3, 6, 7];

const reverseMultiSum = arr => {
   return arr.reduce((acc, val, ind) => {
      const sum = val * (arr.length - ind - 1);
      return acc + sum;
   }, 0);
};

console.log(reverseMultiSum(arr));

실행 결과

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

187

코드 동작 원리

이 코드는 JavaScript의 reduce() 메서드를 활용합니다. reduce()는 배열의 각 요소를 순회하면서 누적값(acc)에 계산 결과를 계속 더해 최종적으로 하나의 값을 반환하는 고차 함수입니다.

핵심 수식은 val * (arr.length - ind - 1) 부분입니다. 전체 배열 길이에서 현재 인덱스(ind)와 1을 빼면 정방향 인덱스가 역방향 인덱스로 변환됩니다. 예를 들어 인덱스 0의 요소는 9를 곱하게 되고, 마지막 인덱스 9의 요소는 0을 곱하게 됩니다. 초기값으로 0을 지정했기 때문에 빈 배열이 입력되더라도 오류 없이 0을 반환한다는 장점도 있습니다.