728x90
반응형
시간초과
#include<vector>
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,s;
//길이가 가장 짧으면서 s이상인거
cin>>n>>s;
vector<int>arr;
arr.assign(n+1,0);
for(int i=1;i<=n;i++){
cin>>arr[i];
arr[i]+=arr[i-1];
}
//1...n개짜리 길이
for(int i=1;i<=n;i++){//100,000
if(arr[i]>=s){
cout<<1; return 0;
}
for(int j=0;j<=n-i;j++){ //100,000
int sum=arr[j+i]-arr[j];
if(sum>=s){
cout<<i; return 0;
}
}
}
cout<<0;
return 0;
}
맞았습니다.
누적합으로 합더하고 합이 크면 left++, 작으면 right++
#include<vector>
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,s;
//길이가 가장 짧으면서 s이상인거
cin>>n>>s;
vector<int>arr;
arr.assign(n+1,0);
for(int i=1;i<=n;i++){
cin>>arr[i];
arr[i]+=arr[i-1];
}
//1...n개짜리 길이
int left=1;
int right=1;
int mins=10000000;
while(left<=right && right<=n){
int len=right-left+1;
int sum=arr[right]-arr[left-1];
if(sum>=s){
mins=min(mins,len);
left++;
}
else{
right++;
}
}
if(mins==10000000)cout<<0;
else cout<<mins;
return 0;
}
728x90
반응형
'하루 1문제 챌린지 > Gold4' 카테고리의 다른 글
백준 20040번 사이클 게임(C++) (0) | 2024.02.29 |
---|---|
백준 1976번 여행가자(C++)🚩 (1) | 2024.02.28 |