https://www.acmicpc.net/problem/1806
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
static int N;
static int S;
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
N=Integer.parseInt(st.nextToken());
S=Integer.parseInt(st.nextToken());
st=new StringTokenizer(br.readLine());
arr=new int[N];
for(int i=0;i<N;i++){
arr[i]=Integer.parseInt(st.nextToken());
}
long sum=arr[0];
int startIdx=0;
int endIdx=0;
int answer=100001;
while(true){
int size=endIdx-startIdx+1;
if(sum>=S){
if(size<answer){
answer=size;
}
sum-=arr[startIdx++];
if(startIdx>=N){
break;
}
}else{
if(endIdx>=N-1){
break;
}
sum+=arr[++endIdx];
}
}
if(answer==100001)
System.out.println(0);
else
System.out.println(answer);
}
}
단순한 슬라이딩 윈도우 + 투 포인터 문제.
이렇게 Java으로 백준의 "부분합" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊