개발자's Life

[알고리즘] 구간 합 - 배열 본문

코딩테스트/Study

[알고리즘] 구간 합 - 배열

Rowen Jobs 2023. 7. 27. 18:59
728x90
반응형

구간 합 배열은 우선 기존 제시되는 배열을 순차적으로 더해 나타내는 배열이다.
아래 배열이 기본적으로 주어져 있다.

int[] arr = { 1, 18, 21, 3, 6}

사이즈 5인 배열에 1, 18, 21, 3, 6 이 있고 이 배열을 기준으로 구간합 배열은 만들어준다.
S[i] = S[i - 1] + arr[i]
공식으로 만들어지고 만들어지는 코드는 아래와 같다.
(폰으로 적는 손코딩이라 돌려보지는 않은 코드입니다..ㅠ)

int[] arr_sum = new int[5]; 

// 인덱스 0 번째는 미리 arr 0번 인덱스로 초기화 
arr_sum[0] = arr[0];

for(int i = 1; i < are.length; i++){
   arr_sum[i] = arr_sum[i - 1] + arr[i];
}

그렇게 되면
arr_sum 변수에는 1, 19, 40, 43, 49 가 순서대로 담겨 있고 해당 함수로 구간 합을 구할수 있다.
인덱스 번호 기준 i ~ j 를 구할려면 공식은 아래와 같다.
s[j] - s[i - 1] 이고 실 데이터로 그린 내용은 아래와 같다.

(좀 휘날리는 부분 양해 부탁드립니다..ㅎ)

위와 같이 인덱스 4는 0 ~ 4 구간 합이고
2 ~ 4 는 (전체 - 2인덱스 전인 1) 와 같다.

구간합 배열은 코딩테스트에서도 자주 사용한다고 하였고 응용하는 방법은 코딩테스트 사용할때 공유 하겠다.

728x90
Comments