Skip to main content Link Menu Expand (external link) Document Search Copy Copied

구간 합 알고리즘 (Prefix Sum Algorithm)


0번째1번째2번째3번째4번째5번째6번째7번째
16-5-11-151054-4
16110-15-5040

구간 합 알고리즘은 누적합 데이터를 통해서 구간합을 O(1)의 속도로 구할 수 있는 알고리즘이다.

첫번째 행은 데이터이고, 아래 행은 누적합 데이터이다.

예를 들어,

1번째 원소부터 5번째 원소까지의 구간 합을 구해야 한다면

위의 예시의 경우

arr[1]+arr[2]+arr[3]+arr[4]+arr[5] = (-5) + (-11) + (-15) + 10 + 5 = -16이다.

총 + 연산이 4번 사용되었다.

구간합 알고리즘을 사용하면

sum[5]-sum[0] = -16 으로 단 한번의 연산으로 구간합을 구할 수 있다.

정리하면,

a~b 까지 부분합을 구할 때,

sum[b] - sum[a-1]로 구할 수 있다.