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;
}
'알고리즘 > 그외중요한것들' 카테고리의 다른 글
완주하지 못한 선수 (Python) (0) | 2020.07.03 |
---|---|
2252번. 줄 세우기 (0) | 2020.05.11 |
리스트 얕은 복사 후 기존 값을 다른 것으로 대체하면 (1) | 2020.04.23 |