int answer = 0, sum = 0, lt = 0;
for(int rt = 0;rt<n;rt++){
sum += arr[rt];
}
위의 코드는 sum값을 rt < n 일 때 까지, arr[0]+arr[1]+...+ 반복해서 더 해준다.
여기서 조건문을 추가해 sum == m 일때 answer++ 를 해주자.
int answer = 0, sum = 0, lt = 0;
for(int rt = 0;rt<n;rt++){
sum += arr[rt];
if(sum == m) answer++;
}
여기서 rt++를 해주고 있는데 sum >= m 이면, lt의 값을 sum에서 빼주고 lt++를 해준다.
while(sum>=m){
sum -= arr[lt++];
if(sum == m)
answer++;
}
package algolecture;
import java.util.Scanner;
public class Main28 {
public int solution(int n, int m, int[] arr){
int answer = 0, sum =0, lt =0;
for(int rt = 0; rt<n; rt++){
sum += arr[rt];
if(sum == m) answer++;
while(sum>=m){
sum-= arr[lt++];
if(sum==m)
answer++;
}
}
return answer;
}
public static void main(String[] args) {
Main28 T = new Main28();
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));
}
}