백준/두 포인터
1806 부분합
have a good time
2024. 8. 2. 23:28
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int sum[] = new int[N+1];
st = new StringTokenizer(br.readLine(), " ");
sum[0] = 0;
for(int i=1; i<=N; i++) {
sum[i] = Integer.parseInt(st.nextToken()) + sum[i-1];
}
int left = 0;
int right = 1;
int value = 0;
int result = Integer.MAX_VALUE;
while(left<right && right<=N) {
value = sum[right] - sum[left];
if(value>=S) {
left++;
result = Math.min(result, right-left + 1);
}else {
right++;
}
}
// 합을 만드는 것이 불가능하다면 0을 출력
if(result== Integer.MAX_VALUE) {
result = 0;
}
System.out.println(result);
}
}
