Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[개념정리] 구간 합 #4

Open
YubinShin opened this issue Dec 12, 2023 · 0 comments
Open

[개념정리] 구간 합 #4

YubinShin opened this issue Dec 12, 2023 · 0 comments

Comments

@YubinShin
Copy link
Owner

구간 합 이란?

구간 합은 합 배열을 이용하여 시간복잡도를 줄이기 위해 사용하는 알고리즘입니다.

시간복잡도

O(N)

합 배열

기존의 배열을 누적 합해서 전처리한 배열.

스트림 방식 보다 전통적인 반복문이 더 좋다고 한다.
반복문의 i 를 1부터 시작하면 편리하다.

int[] 원본배열 = {1, 2, 3, 4, 5}; 
int[] 누적합 = new int[원본배열.length];
  
for(int i = 1; i < 원본배열.length; i++){
  누적합[i] = 누적합[i-1] + 원본배열[i];
}

구간 합 구하는 법

누적합[ j ] - 누적합[ i - 1 ]

2번째 부터 5번째 요소까지의 합을 구하고 싶어

// 누적합 = {1, 3, 6, 10, 15}
// 누적합[5] - 누적합[2 - 1]
// 15 - 1 = 14

만약 배열 내 요소가 자주 바뀌어서 합배열이 무용지물이면 어떡하지?

이후 나오는 세그먼트 트리로 풀이 가능!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant