본문 바로가기
Algorithm

[BAEKJOON] 1806번: 부분합

by Y06 2021. 9. 21.

1806번 문제이다.

사진을 누르면 문제로 이동한다.

문제는 C++언어로 구현하였다.

 

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	int n, s;
	cin >> n >> s;
	vector<int> arr(n);
	for (int i = 0; i < n; i++)	// 배열 입력
		cin >> arr[i];

	int start = 0, end = 0, sum = 0, minLen = 0x7FFFFFF;
	while (start <= end) {
		if (sum >= s) {	// 현재 포인터의 합이 s보다 크거나 같으면 start ++
			minLen = min(minLen, end - start);	// 가장 짧은 길이만 저장
			sum -= arr[start++];
		}
		else if (end == n) break;
		else sum += arr[end++];	// end++ 함으로써 sum 증가
	}

	if (minLen == 0x7FFFFFF) cout << 0 << endl;	// 불가능 하면 0 출력
	else cout << minLen << endl;
	return 0;
}

 

 

 

'Algorithm' 카테고리의 다른 글

[BAEKJOON] 1074번: Z  (0) 2021.09.27
[BAEKJOON] 2018번: 수들의 합 5  (0) 2021.09.26
[BAEKJOON] 2750번: 수 정렬하기  (0) 2021.09.21
[BAEKJOON] 10814번: 나이순 정렬  (0) 2021.09.21
[BAEKJOON] 16199번: 나이 계산하기  (0) 2021.09.21