[백준] 2003. 수들의 합2

고재욱·2021년 10월 18일

Baekjoon

목록 보기
35/35

❓ 문제 ❓
수들의 합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;
}

0개의 댓글