til/Algorithm
연속부분수열
값진
2021. 7. 30. 18:21
import java.util.*;
class Main {
public int solution(int n, int m, int[] arr){
int answer=0, sum=0, lt=0; //sum은 lt~rt합
for(int rt=0; rt<n; rt++){ //rt증가
sum+=arr[rt]; //rt더하기
if(sum==m) answer++; //같은지 확인,카운트
while(sum>=m){//lt하나 뻬도 m보다 클 수 있으니 이때 계속빼줌
sum-=arr[lt++];//lt가 가리키는값 빼고 증가
if(sum==m) answer++;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int m=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n, m, arr));
}
}