백준알고리즘
수들의 합 2
먼지의삶
2019. 8. 26. 00:38
#include<iostream>
#include<cstdio>
using namespace std;
int n, m;
int sum,ans;
int main(){
scanf("%d %d", &n, &m);
int *a = new int[n];
for(int i = 0; i < n;i++){
scanf("%d", &a[i]);
}
int left = 0; int right = 0; sum = a[0]; ans = 0;
while(left <= right && right < n )
{
if(sum < m){
right +=1;
sum += a[right];
}
else if(sum == m){
ans+=1;
right+=1;
sum += a[right];
}
else if(sum > m){
sum -= a[left];
left++;
if(left >right && left < n){
right = left;
sum = a[left];
}
}
}
printf("%d\n", ans);
return 0;
}
정말 오랜만에 동적배열 할당해본듯...
문제는 어렵지않았고, 투포인터 사용해서 풀이했다.
L, R에 따라 상황이다른데, 조건에따라, LEFT RIGHT가 움직이는것을 통해 풀이