728x90
반응형
구간 합
합 배열 을 이용하여 시간 복잡도를 더 줄이기 위한 특수 목적 알고리즘
합 배열
배열에서 특정 범위에 존재하는 요소의 합
합 배열 정의
S [ i ] = A [ 0 ] + A [ 1 ] + ...... + A [ i - 1 ] + A [ i ]
ex) i가 4일 때 합 배열 = A [ 0 ] ~ A [ 4 ] 까지의 합
쉽게말해 누적합을 말한다.
합 배열 공식
S [ i ] = S [ i - 1 ] + A [ i ]
구간합 공식
배열 인덱스 i 부터 인덱스 j 까지의 합
S [ j ] - S [ i - 1 ]
ex) 2 ~ 5까지의 합 = S [ 5 ] - S [ 1 ]
- 배열 A 의 0 ~ 1까지의 합은 3 + 9 = 12 이다.
- 배열 A 의 2 ~ 5까지의 합은 5 + 10 + 4 + 8 = 27이다.
- 합 배열 S [ 5 ] = 36 이다.
- 합 배열 S [ 1 ] = 9 이다.
- 합 배열 S [ 5 ]인 36에서 합배열 S [ 1 ]인 9를 빼면 27 이 된다.
다시한번 식으로 표현하자면 아래와 같다
S [ 5 ] = A [ 0 ] + A [ 1 ] + A [ 2 ] + A [ 3 ] + A [ 4 ] + A [ 5 ]
⊝ (MINUS)
S [ 1 ] = A [ 0 ] + A [ 1 ]
= A [ 2 ] + A [ 3 ] + A [ 4 ] + A [ 5 ]
결과적으로 주어진 구간합 공식에 정의된 합 배열간의 차를 통해 2 ~ 5까지의 합인 27과 동일한 결과값이 나오게 된다.
번외
Q. 합배열 문제에서 배열의 값이 자주 바뀐다면?
Segment(Index) Tree
728x90
반응형
'자료구조 알고리즘 코딩테스트 문제풀이 > 알고리즘 - Do it' 카테고리의 다른 글
[정렬 알고리즘] - 삽입 정렬 O(n²) (1) | 2023.12.11 |
---|---|
[정렬 알고리즘] - 선택정렬 O(n²) (0) | 2023.12.11 |
[정렬 알고리즘] - 버블정렬 O(n²) (0) | 2023.12.11 |
디버깅의 중요성 (코딩테스트 뿐만 아니라 실무에서도) (0) | 2023.12.07 |
시간복잡도 이론 (0) | 2023.12.05 |