배열의 특정 구간을 연속적으로 처리하는 알고리즘이다.
배열에서 연속된 데이터 구간에서 처리하기를 원하거나, 정렬된 두 배열이 문제 조건에 있다면, 투포인터 알고리즘을 의심해봐야 한다.
import java.util.*;
public class TwoPointer {
public static void main(String[] args){
int[] arr = {1, 2, 3, 2, 5};
int count = 0;
int end = 0;
int sum = 0;
for(int start = 0 ; start < arr.length ; start++) {
while(sum < 5 && end < arr.length) {
sum += arr[end];
end += 1;
}
if(sum == 5) {
count++;
}
sum -= arr[start];
}
System.out.println(count);
}
}