반응형
Notice
Recent Posts
Recent Comments
Link
뜌릅
Subsequence (부분합) 1806번 [백준] 본문
반응형
부분합 문제로 point to point 개념을 사용하여 쉽게 풀어내었다.
2003번 문제와 매우 비슷한 유형이다.
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define fast_io ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rep(i, j) for(int i=0;i<j;i++)
typedef long long ll;
const int inf = 987654321;
int main() {
fast_io;
int n, s;
cin >> n >> s;
vector<int> v(n);
for (int& x : v)cin >> x;
int low = 0, high = 0;
int sum = v[0];
int length = inf;
while (low <= high && high < n) {
if (sum > s) {
length = min(length, high - low + 1);
sum -= v[low++];
if (low > high && low < n)
{
high = low;
sum = v[low];
}
}
else if (sum == s) {
length = min(length, high - low + 1);
if (high == n - 1)break;
sum += v[++high];
}
else {
if (high == n - 1)break;
sum += v[++high];
}
}
if (length == inf)cout << 0 << endl;
else cout << length << endl;
return 0;
}
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
반응형
'알고리즘 > PS 문제' 카테고리의 다른 글
비숍 1799번 [백준] (0) | 2021.12.23 |
---|---|
외판원 순회 2098번 [백준] (0) | 2021.12.22 |
부분수열의 합2 1208번 [백준] (0) | 2021.11.02 |
음악프로그램 2623번 [백준] (0) | 2021.07.01 |
내려가기 2096번 [백준] (0) | 2021.06.20 |