누적합 알고리즘을 간단히 정리해보자

2025. 5. 12. 21:59·알고리즘

누적합 알고리즘은?

배열, 리스트 일정 구간까지의 합을 빠르게 계산하도록 미리 계산된 합의 결과를 저장해두는 방식.

[여러 번 구간 합을 계산해야할 때 사용]

 

사용할 수 있는 조건

- 배열이 반드시 정적 배열이어야 함. (변하지 않는 배열)

 

const A = [3, 1, 4, 1, 5];
const prefix = [A[0]];

for (let i = 1; i < A.length; i++) {
  prefix[i] = prefix[i - 1] + A[i];
}

const sum = (i, j) => i === 0 ? prefix[j] : prefix[j] - prefix[i - 1];

console.log(sum(1, 3)); // 1 + 4 + 1 = 6

 

1차원 배열이 주어졌을 때는 기준 점의 왼쪽을 보면 되기 때문에 prefix[i] = prefix[i-1]+A[i] 와 같은 식을 사용하여 더해나갑니다.

 

 

만약 누적합 없이 계산해야한다면 시간 복잡도는

 

O(N)

 

질문을 몇번 하는가에 따라서

 

O(N*Q)

 

만약 누적 합이라면?

 

O(N*Q) → O(N)

으로 줄일 수 있다.

'알고리즘' 카테고리의 다른 글

그리디 알고리즘은 무엇이고 어디에 써야할까?  (0) 2025.04.27
이분 탐색 알고리즘의 원리는 무엇이고 어떤 문제에서 사용할까?  (1) 2025.04.20
'알고리즘' 카테고리의 다른 글
  • 그리디 알고리즘은 무엇이고 어디에 써야할까?
  • 이분 탐색 알고리즘의 원리는 무엇이고 어떤 문제에서 사용할까?
hyuk-dev
hyuk-dev
개발 과정에서 얻은 지식과 문제 발생 시 해결 과정을 기록하기 위한 블로그입니다.
  • hyuk-dev
    이동혁 기술 블로그
    hyuk-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • 알고리즘 (3)
      • 프로젝트 (3)
      • 개발 (5)
        • WEB (2)
        • HTML (1)
        • CSS (1)
        • JavaScript (1)
        • React.js (0)
        • Next.js (0)
        • Nest.js (0)
      • 경험 (4)
        • 코드잇 스프린트 (1)
      • 협업 (2)
        • Git (1)
        • Notion (1)
  • hELLO· Designed By정상우.v4.10.5
hyuk-dev
누적합 알고리즘을 간단히 정리해보자
상단으로

티스토리툴바