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;
}