각 원소마다 모든 값을 순회할때,O(N^2)
연속하다는 특성을 이용해서 처리,O(N)
두개의 포인터가 움직이면서 계산
예를들어서 설명하면 1,2,3,4,5 라는 숫자가있다
이때 연속하는 3개의 숫자를 더해서 최대값인 값을 구하라 라고 한다면 우리는 돌아가면서123,234,345이렇게 구할 것이다.값이 증가함에 따라 선택햐야한느 숫자에따라 더 많은 for문을 구현해야한다.
이때에 연속하는 수를 먼저 더해주고 123을 더해주고 다음수인 4를 더하고 1을 빼주고 하는 식으로 인텍스에 따라서 빼고 더함을 함으로써 쉽게 해결할 수 있다는 알고리즘이다.
예시코드
// 우선 k 개 만큼 더해주는 for문 작성
for(int i = 0; i < k;i++){
sum += nums[i];
}
max = sum;
// 다음 인덱스 더하고 이전 인덱스 빼주기
for(int i = k;k < n; i++){
sum += nums[i];
sum -= nums[i - k];
max = Math.max(max,sum);
}
이때 파이썬은 상관없지만 java, c++ 같은 경우는 총합이 int 를 초과하는지 아닌지를 확인하는 것이 팔요. long 으로 바꿔야할 때가 올수도있음,