# BOJ02003 수들의 합 2
https://www.acmicpc.net/problem/2003 (opens new window)
N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구한다.
# 투 포인터
# 제출 코드
아래는 최종 제출 코드이다.
import java.util.Scanner;
public class BOJ2003 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 10 <= n < 100_000
// 0 < S <= 300_000_000. int 표현범위 -2,147,483,648 ~ 2,147,483,647
int s = scanner.nextInt();
int[] array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = scanner.nextInt();
}
int start = 0;
int end = 0;
int sum = array[0];
int count = 0;
while (true) {
if (sum >= s) {
if (sum == s) {
count++;
}
sum -= array[start++];
} else {
end++;
if (end == n) {
break;
}
sum += array[end];
}
}
System.out.println(count);
}
}