import java.util.*;
class Main {
public static int solution(int n, int m, int[] arr){
//합이 M이 되는 수열의 갯수
int answer = 0;
//원소들의 합
int sum = 0;
int lt = 0, rt = 0;
while(rt < n) {
//계속 더해!
sum += arr[rt++];
//더하다가 m이 되면 ++
if(sum == m) answer++;
//같거나 클때는 빼줘야함.
while(sum >= m) {
sum -= arr[lt++];
//빼고나서 합이 m이 될 수도 있음
if(sum == m) answer++;
}
}
System.out.println(answer);
return answer;
}
public static void main(String[] args) {
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();
}
solution(n, m, arr1);
}
}
'Algorithm > inflearn' 카테고리의 다른 글
★최대 길이 연속부분수열 (0) | 2021.09.15 |
---|---|
연속된 자연수의 합(two pointers) (0) | 2021.09.14 |
★공통원소 구하기 (0) | 2021.09.13 |
#★두 배열 합치기 (0) | 2021.09.13 |
★★멘토링 (0) | 2021.09.10 |