728x90
반응형
Two pointer 기법
오른쪽으로 이동하면서 값을 더해 sum==M일 때 count를 올려주고, 해당 값이 M을 넘었을 때, left의 위치와 비교해서 지금까지 더해온 값을 모두 빼주며 sum을 초기화한다
#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N, M;
cin >> N >> M;
vector<int> A(N);
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
int left = 0, right = 0, sum = 0, count = 0;
while (right < N)
{
sum += A[right];
right++;
while (sum > M && left < right)
{
sum -= A[left];
left++;
}
if (sum == M)
{
count++;
}
}
cout << count;
return 0;
}
728x90
반응형
'Baekjoon > Silver' 카테고리의 다른 글
Baekjoon 6550.ALL IN ALL(부분 문자열) c++ [Silver V] (0) | 2025.02.20 |
---|---|
Baekjoon 2805.EKO(나무자르기) c++ [Silver II] (0) | 2025.02.04 |
Baekjoon 15650.N과 M (2) c++ [Silver III] (0) | 2025.01.09 |
Baekjoon 10845.큐 c++ [Silver IV] (0) | 2024.12.30 |
Baekjoon 10816.숫자 카드 2 c++ [Silver IV] (0) | 2024.12.30 |