ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 부분합
    백준알고리즘 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;
    }

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

    '백준알고리즘' 카테고리의 다른 글

    가르침  (0) 2019.08.26
    수들의 합 2  (0) 2019.08.26
    나이트의 이동  (0) 2019.08.14
    다리만들기  (0) 2019.08.14
    뿌요뿌요  (0) 2019.08.14

    댓글

Designed by Tistory.