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

JavaScript로 배열의 누적 합계 구하기: 각 인덱스까지의 합 계산 방법

숫자 배열을 입력받아 새로운 배열을 반환하는 JavaScript 함수를 작성해야 합니다. 이때 새 배열의 각 인덱스에는 원본 배열에서 해당 인덱스까지의 모든 숫자의 합이 담겨야 합니다.

문제 이해하기

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

const arr = [1, 2, 3, 4, 5];

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

const output = [1, 3, 6, 10, 15];

각 요소가 어떻게 계산되는지 살펴보면 다음과 같습니다.

  • 인덱스 0: 1
  • 인덱스 1: 1 + 2 = 3
  • 인덱스 2: 1 + 2 + 3 = 6
  • 인덱스 3: 1 + 2 + 3 + 4 = 10
  • 인덱스 4: 1 + 2 + 3 + 4 + 5 = 15

접근 방식: 동적 프로그래밍(Dynamic Programming)

이 문제는 동적 프로그래밍 기법으로 효율적으로 해결할 수 있습니다. 매번 처음부터 합을 다시 계산하는 대신, 이전 인덱스까지의 누적 합을 저장해 두고 현재 요소만 더하면 되기 때문입니다. 즉, result[i] = arr[i] + result[i-1] 공식을 반복 적용하는 것입니다.

이 방식은 시간 복잡도 O(n)으로 배열을 한 번만 순회하면 되므로 매우 효율적입니다.

코드 구현

다음은 위 접근 방식을 구현한 코드입니다 −

const arr = [1, 2, 3, 4, 5];
const cumulativeSum = arr => {
    let result = [arr[0]];
    for(let i = 1; i < arr.length; i++) {
        result.push(arr[i] + result[i-1]);
    }
    return result;
}
console.log(cumulativeSum(arr));

코드 설명

  • 결과 배열의 첫 번째 요소는 원본 배열의 첫 번째 요소와 같으므로 [arr[0]]으로 초기화합니다.
  • 두 번째 요소부터 마지막 요소까지 반복하면서, 현재 요소에 바로 앞 인덱스의 누적 합(result[i-1])을 더한 값을 결과 배열에 추가합니다.
  • 모든 반복이 끝나면 완성된 누적 합계 배열을 반환합니다.

실행 결과

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

[ 1, 3, 6, 10, 15 ]

기대했던 대로 각 인덱스까지의 누적 합계가 정확히 계산된 것을 확인할 수 있습니다.