❓ 문제 ❓
수들의 합2
💯 문제 풀이 💯
투 포인터 방식으로 접근했다.
포문으로 배열을 쭉 더하다가 지정한 숫자(m)보다 크면 left에 위치한 숫자를 뺀다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> arr(n);
for (int i = 0; i < n; i++)
cin >> arr[i];
int left = 0;
int sum = 0;
int cnt = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
while (sum > m) {
sum -= arr[left++];
}
if (sum == m)
cnt++;
}
cout << cnt;
}