이 구간의 사이즈가 고정되어있는게 슬라이딩 윈도우고, 고정되어있지 않은게 투포인터임

ex) 2, 3, 4, 5, 6, 7번 학생을 지목할 때
-> 시작점 2와 끝점 7이라는 2개의 점으로 접근할 데이터의 범위 표현
-> 2번부터 7번까지 학생
O(N)

초기세팅: 시작점과 끝점이 리스트의 첫번째 원소를 가리키도록 설정
아래 과정 반복
현재 부분합이 M과 같을 경우
-> 카운트
현재 부분합이 M보다 작을 경우
-> 부분합에 포함되는 원소를 늘려야 함
-> end를 1 증가시킴
현재 부분합이 M 보다 같거나 큰 경우
-> 부분합에 포함되는 원소를 줄여야함
-> start를 1 증가시킴

ex) 특정한 합을 가지는 부분 연속 수열 찾는 문제에 적용 가능
O(N) 시간복잡도를 갖는 방식으로 풀이하는 방법

예시 - 합이 5인 연속 수열 찾기


반복..
count, interval_sum, end = 0, 0, 0 # 초기세팅
arr = [2, 3, 1, 4, 29, 3]
for a in arr: # 리스트의 원소를 돌면서
# end를 가능한 만큼 오른쪽으로 이동
while interval_sum이 M보다 작고 and end 포인터가 N보다 작을 때까지
interval_sum += end번째 원소의 값 누적
end 1 증가
# interval_sum이 M과 같은 경우
if interval_sum이 M이라면
count 1 증가
# interval_sum이 M 이상인 경우
interval_sum -= arr[start] # start번째 값 제외 (= start 포인터 오른쪽으로 한칸 이동)



N개의 정수로 구성된 배열과 M개의 쿼리가 주어졌을 때
-> O(M+N)

pre 배열 i에 원래 배열 i-1까지의 누적합을 저장해둠
이를 이용하여 M개의 쿼리의 구간합을 계산할 때 pre[rignt] - pre[left-1]로 계산 가능
pre[rignt] - pre[left-1]
+) 나는 다른 문제에서 pre[rignt] - pre[left]로 계산했었음 참고
https://github.com/seunghaLim/algo/pull/153
