본문 바로가기
이론/코딩테스트

[백준] 1806번 부분합 (투포인터 알고리즘)

by 퇴근후개발 2022. 7. 29.
반응형

-문제

 

-코드

#include<stdio.h>
#include<vector>
using namespace std;

int main()
{
	int n, m, p1=0, p2=0;
	scanf("%d %d", &n, &m);
	vector<int> a(n+1);
	int min = n + 1;

	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	int sum = a[0];
	while (p1<= p2 && p2 <n)
	{
		if (sum < m)
		{
			sum += a[++p2];
		}
		else
		{
			if (min > p2 - p1 + 1) min = p2 - p1 + 1;
			sum -= a[p1++];
		}
	}

	if (min == n+1) printf("%d", 0);
    else printf("%d", min);
	return 0;
}
반응형