[C] 백준 2003 수들의 합 2

z00m__in·2021년 5월 15일
0

Algorithm - Two Pointer

목록 보기
3/5

https://www.acmicpc.net/problem/2003

문제

N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.

제출 23325 정답 비율 50%





코드

#include <stdio.h>


int main(void) {
	int N = 0, M = 0;
	scanf("%d %d", &N, &M);

	int* A = malloc(N * sizeof(int));
	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}

	int cnt = 0, sum = 0;
	int left = 0, right = 0;
	while (1) {
		if (right > N)
			break;
		else if (sum >= M) {
			sum -= A[left];
			left++;
		}
		else if (sum < M) {
			right++;
			sum += A[right];
		}

		if (sum == M)
			cnt++;
	}

	printf("%d", cnt);
}
profile
우당탕탕 기록지

0개의 댓글

관련 채용 정보