https://www.acmicpc.net/problem/2003
1. 주의사항
v.push_back(0);
마지막에 0을넣어야 e++되면서 0을 가르킴 => out of index 방지
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m,ret,temp;
vector<ll> v;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 0; i < n; ++i) {
cin >> temp;
v.push_back(temp);
}
v.push_back(0);
ll s = 0, e = 1, sum = v[0];
while (1) {
if (sum == m) ret++;
if (sum <= m) sum += v[e++]; //e를 한칸뒤로
if (sum > m)sum -= v[s++]; //s를 한칸뒤로
if (e == v.size()) break;
}
cout << ret;
}
'Algorithm > 투포인터' 카테고리의 다른 글
백준 22862 c++ // 투포인터 응용방법(db 이용) (0) | 2023.11.17 |
---|---|
백준 13144 List Of Unique Numbers c++ // 투포인터, 배열활용 (0) | 2023.11.14 |
백준 1644 소수의연속합 c++ // 소수판별 알고리즘, 투포인터 (0) | 2023.11.13 |
백준 1806 부분합 c++ // 투포인터, 누적합 구현방법 (0) | 2023.11.06 |
백준 2230 수고르기 c++ // 투포인터 사용방법 (0) | 2023.11.06 |