https://www.acmicpc.net/problem/2003
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n]; // 수열을 담을 배열
int count = 0;
for(int i = 0; i < n; i++){
arr[i] = sc.nextInt();
}
for(int i = 0; i < n; i++){
int sum = arr[i];
if(arr[i] == m){ // i번째 수부터 j번째 수까지 합이 아닌 자기 자신이 m일때
count++;
}
for(int j = i + 1; j < n; j++){
sum += arr[j];
if(sum == m){ // i번째 수부터 j번째 수까지 합이 m일때
count++;
break;
}
else if(sum > m){ // 합이 m보다 커지면 더 찾아볼 이유가 없으므로 break
break;
}
}
}
System.out.println(count);
}
}