본문 바로가기
Algorithm 💫/Problem Solving

[백준] 1806번: 부분합/ C++ ⭐

by 돼지고기맛있다 2021. 9. 14.
반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/1806

 

1806번: 부분합

첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 풀이

 

 

✏️ 문제 코드

#include <bits/stdc++.h>

using namespace std;

int main(){
    
    int N, S; cin>>N>>S;
    int num[100001];
    
    for(int i=0; i<N; i++){
        cin>>num[i];
    }
    int len=N+1, sum=num[0];
    int low=0, high=0;
    
    while(low<=high and high<N){
        if(sum<S){
            sum+=num[++high];
        }else{
            len= min(len, high-low+1);
            sum-=num[low++];
        }
    }
    if(len==N+1)len=0;
    
    cout<<len<<"\n";
    
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

반응형

댓글