C++

C++ - 구간합 이론

마루설아 2025. 3. 4. 21:03

배열 A, 합 배열 S를 미리 구하면

시간 복잡도가 O(N)에서 O(1)로 감소된다.

 

인덱스 0 1 2 3 4 5
배열 A 15 13 10 7 3 12
합 배열 S 15 28 38 45 48 60

 

 

합 배열 S를 만드는 공식

S[i] = S[i-1] + A[i]

 

 

구간 합을 구하는 공식

S[j] - S[i-1] // i에서 j까지 구간합

 

 

A[2] ~ A[5] 구간합을 구하는 공식

S[5] = A[0] + A[1] + A[2] + A[3] + A[4] + A[5]
S[1] = A[0] + A[1]

S[5] - S[1] = A[2] + A[3] + A[4] + A[5]