알고리즘/그외중요한것들
2003번. 수들의 합 2
위대한루루
2020. 3. 30. 11:01
https://www.acmicpc.net/problem/2003
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int n, m;
scanf("%d %d\n", &n, &m);
int arr[n];
for (int i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
int start = 0, end = 0, sum = 0, count = 0;
/*
while (start < n) {
if (sum >= m) {
sum -= arr[start];
start ++;
}
else if (end == n) {
break; // 이미 end가 n까지 왔다는 것은 sum이 작다는 것
}
else {
sum += arr[end];
end ++; // end가 가리키는 부분은 포함 안 함
}
if (sum == m)
count ++;
}
*/
while (start < n) {
if (sum == m)
count ++;
if (sum >= m) {
sum -= arr[start];
start ++;
}
else if (end > n) {
break;
}
else {
end ++;
sum += arr[end-1];
}
}
printf("%d\n", count);
return 0;
}