연속적으로 나열된 n개의 수가 있을 때 특정 구간의 모든 수를 합한 값을 계산하는 문제

n = 5
data = [10,20,30,40,50]

sum_value = 0
prefix_sum = [0]
for i in data:
    sum_value+=i
    prefix_sum.append(sum_value)

left = 2
right = 4
print(prefix_sum[right] - prefix_sum[left-1])

N개의 숫자를 더하는 연산을 M번 하면 O(NM) = O(N2)시간이 걸림

접두사 합(prefix sum)을 활용: 맨 앞부터 특정 위치까지의 합을 미리 구한 배열

Left에서 Right까지의 합은 P[Right] - P[Left-1]

스크린샷 2025-03-16 오후 10.02.01.png

구간합 계산 = O(n)

M개 쿼리 연산 O(M)

O(N+M)