백준알고리즘

부분합

먼지의삶 2019. 8. 26. 00:37
#include<cstdio>

using namespace std;
int a[100001];

int main(){
    int n,s;
    scanf("%d %d", &n,&s);

    for(int i = 0; i < n; i++){
        scanf("%d", &a[i]);
    }
    int i = 0;
    int j = 0;
    int sum = a[0];
    int ans = n+1;
    while(i<= j && j < n)
    {
        if(sum < s){
            j +=1;
            sum += a[j];
        }
        else if(sum == s){
            if(j-i+1 < ans){
                ans = j-i+1;
            }
            j+=1;
            sum+=a[j];
        }
        else if(sum >s){
            if(j-i+1 < ans){
                ans= j-i+1;
            }
            sum -= a[i];
            i++;
        }
    }
    if(ans > n) ans =0;
    printf("%d\n", ans);
    return 0;
}

부분합문제, 브루트포스로 풀었는데, 딱히 어렵진않았지만 문제를 잘읽어야함