package main3;
import java.util.Scanner;
public class Main3 {
public int solution(int n, int m , int []arr1){
// n 개
// 합 m
int count = 0;
int sum = 0;
//n개중에서
for(int i = 0; i < n ; i ++ ) {
//System.out.println("....");
sum = 0;
for(int j = i+1 ; j < n ; j ++) {
if(arr1[i] == m) {
count++;}
sum += arr1[j];
//System.out.println(sum);
if(sum == m) {
count++;
}
}
}
return count;
};
public static void main(String[] args) {
Main3 main2 = new Main3();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int m=kb.nextInt();
int []arr1 = new int[n];
for(int i=0; i<n; i++){
arr1[i] = kb.nextInt();
};
System.out.println(main2.solution(n,m,arr1));
}
}
(two pointers) 사용하여 풀어낸 방식
// rt,lt 사용
package main3;
import java.util.Arrays;
import java.util.Scanner;
public class Main3 {
public int solution(int n, int m , int []arr1){
//n 이 갯수
//m 이 나와야하는 숫자
int count = 0;
int sum = 0;
int lt = 0;
for(int rt = 0; rt < n; rt ++) {
if(arr1[rt] == m) {
count ++;
}
sum += arr1[rt];
if(sum == m) {
count ++;
}
while(sum >= m) {
sum -= arr1[lt];
lt ++;
if(sum == m) {
count++;
}
}
}
// 2 1 3 1 1 1 2
return 0;
};
public static void main(String[] args) {
Main3 main2 = new Main3();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int m=kb.nextInt();
int []arr1 = new int[n];
for(int i=0; i<n; i++){
arr1[i] = kb.nextInt();
};
System.out.println(main2.solution(n,m,arr1));
}
}