본문 바로가기

카테고리 없음

Baekjoon 2003 수들의 합 2

Link https://www.acmicpc.net/problem/2003

결과 2028 KB / 0 ms

언어 C++17

 

풀이

투 포인터를 이용해 연속된 부분합을 빠르게 구하는 아이디어를 연습하는 문제

투 포인터를 이해하기에는 완벽한 문제가 아닌가 싶다.

 

소스코드

#include <iostream>

using namespace std;

const int MAX = 10000;

int inputs[MAX];

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	int res = 0;
	int n, m; cin >> n >> m;

	for (int i = 0; i < n; i++)
		cin >> inputs[i];

	int left = 0, right = 0;
	int sum = 0;
	while (right <= n) {
		if (sum < m)
			sum += inputs[right++];
		else
		{
			if (sum == m)
				res++;
			sum -= inputs[left++];
		}
	}

	cout << res;


	return 0;
}