https://www.acmicpc.net/problem/1806
package javaTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1806 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int min = Integer.MAX_VALUE;
int start = 0;
int end = 0;
int sum = 0;
boolean flag = true;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int[] numbers = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
}
sum = numbers[0];
while(start < N) {
//합이 S보다 크거나 end가 끝까지 간 경우
if(sum >= S || end == N-1) {
if(sum >= S) {//이 중 합이 S보다 큰경우에만 MIN을 구함
min = Math.min(min, end-start+1);
flag = false;
}//START를 한칸 옮겨주고 SUM에서는 빼준다
sum -= numbers[start++];
//System.out.println("2. "+start + " " + end + " " + sum + " " + min);
}else {//그 외는 END를 한칸 옮겨준 다음 SUM에 합해준다
sum += numbers[++end];
//System.out.println("1. "+start + " " + end + " " + sum);
}
}
if(flag)//sum >= S인 경우가 없을 때는 0을 출력
min = 0;
System.out.println(min);
br.close();
}
}