연속되고 길이가 가변적인 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘
다음과 같이 두 개의 유형이 존재
부분 배열의 합이 Target 값보다 크거가 같으면 Left 를 1 증가 (부분배열의 길이를 줄여 합을 빼줌)
if (sum >= Target) Left++;
부분 배열의 합이 Target 값보다 작으면 Right 를 1 증가 (부분 배열의 길이를 늘려 합을 더함)
if (sum < Target) Right++;
부분 배열의 합이 Target과 같다면 결과 값(count) 를 1 증가
if (sum == Target) count++;
※ 1 에서 부분 배열의 합이 Target 과 같은 경우에도 Left 를 증가시키는 이유
투 포인터와 유사하나, 크기가 고정적인 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘
미닫이 창문을 왼쪽에서 오른쪽으로 밀면서 창문 안의 존재하는 것들을 처리한다고 생각하면 됨
크기가 고정적이기 때문에 포인터 변수를 2개를 둘 필요가 없음
즉, 고정적인 부분 배열의 크기를 나타내는 변수가 있으면 포인터 하나로도 시작과 끝을 알 수 있음
주어진 문제가 부분 배열의 합을 구하는 문제일 경우
오른쪽으로 한칸 옮기더라도, 옮기기전 부분 배열과 옮기고 난 후의 부분 배열에는 겹치는 부분이 존재함
즉, 기존 구간에서 빠지게 되는 가장 왼쪽 칸의 값을 삭제하고 새 구간에 포함되는 값을 추가해주면됨