알고리즘/그외중요한것들

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;
}