누적합 알고리즘은 배열 또는 리스트의 각 원소까지의 누적 값을 빠르게 계산하는 기법입니다. 이를 통해 구간 합을 빠르게 구하거나 특정 구간의 합을 계산하는 등 다양한 연산을 효율적으로 수행할 수 있습니다. 주로 구간 합 문제나 부분합 문제를 해결하는 데 사용됩니다.
누적합 알고리즘의 주요 아이디어는 다음과 같습니다:
누적합 알고리즘은 다음과 같은 점에서 유용합니다:
다음은 누적합 알고리즘의 간단한 예제 코드입니다 (Python을 기준으로 작성했습니다):
def prefix_sum(arr):
n = len(arr)#배열의 길이
prefix_sum_arr = [0] * (n + 1)
for i in range(1, n + 1):
prefix_sum_arr[i] = prefix_sum_arr[i - 1] + arr[i - 1]
return prefix_sum_arr
# 누적합 배열을 생성합니다.
original_array = [1, 2, 3, 4, 5]
prefix_sum_array = prefix_sum(original_array)
# 2번부터 4번까지의 구간 합을 계산합니다.
start_index = 2
end_index = 4
interval_sum = prefix_sum_array[end_index] - prefix_sum_array[start_index - 1]
print("누적합 배열:", prefix_sum_array)
print("구간 합:", interval_sum)
누적합 알고리즘은 구간 합 문제나 부분합 문제와 같은 상황에서 효율적으로 사용될 수 있는 강력한 도구입니다.