이 문제는 투포인터로 풀었다.
1. 현재 값을 sum이라는 변수에 더한다
2. 만약 S 이상이라면 맨 처음에 더했던 요소를 뺀다.
3-1. 뺏음에도 불구하고 S 이상이라면 또 처음에 있던 요소를 뺀다.
3-2. S보다 작다면 다시 다음 요소를 더해준다.
이렇게 해서 풀었다.
import java.awt.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.*;
import java.util.List;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int n = Integer.parseInt(arr[0]);
int limit = Integer.parseInt(arr[1]);
StringTokenizer st = new StringTokenizer(br.readLine());
int[] numbers = new int[n];
for(int i=0;i<numbers.length;i++) numbers[i] = Integer.parseInt(st.nextToken());
int sum = 0;
int start = 0;
int end = 0;
int len = Integer.MAX_VALUE;
for(int i=0;i<numbers.length;i++){
sum += numbers[i];
if(sum >= limit){
while(true){
sum -= numbers[start];
start++;
if(sum >= limit)
len = Math.min(len, end - start + 1);
if(sum < limit) {
break;
}
}
}
end++;
}
if(len == Integer.MAX_VALUE) System.out.println(0);
else System.out.println(len);
}
}