연속합이 기준보다 작으면? end를 늘려서 더해지는 수의 개수를 추가한다.
연속합이 기준 이상이면? 조건 만족을 처리하고, 다음 비교를 위해 start를 다음 칸!
import java.io.*;
import java.util.*;
// 연속된 수들의 부분합
class Main {
static int N, S, start, end, min, sum; // N은 원소 개수, S는 기준합
static int[] nums;
public static void main(String[] arg) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ", false);
N = Integer.parseInt(st.nextToken());
S = Integer.parseInt(st.nextToken());
nums = new int[N];
st = new StringTokenizer(br.readLine(), " ", false);
for (int i = 0; i < N; i++)
nums[i] = Integer.parseInt(st.nextToken());
start = 0;
end = 0;
min = 0;
sum = 0;
while(true) {
if (sum >= S) {
sum -= nums[start];
if ( min == 0 ) min = end - start;
else min = Math.min(min, end-start);
start++;
}
else if (end == N) break;
else {
sum += nums[end];
end++;
}
}
System.out.print(min + "");
}
}