[백준/C++] 2559번: 수열

Eunho Bae·2022년 4월 9일
0

백준

목록 보기
25/40

문제 링크


아이디어

코드 설명

먼저 k만큼 수를 더하고, 답을 저장하는 변수인 ans에 수의 합을 저장한다.
그리고 그 다음 end를 1 증가시킨 후 앞쪽 숫자 하나를 빼고, 뒷쪽 숫자를 더하면서 k개수만큼 한 덩어리로 한칸씩 이동하면서 가장 큰 수를 찾도록 코딩했다.


제출 코드

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

using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cout.tie(0);
	cin.tie(0);

	int n, k;
	cin >> n >> k;

	vector<int> v(n);

	for (int i = 0; i < n; i++)
		cin >> v[i];

	int start = 0, end = k - 1;
	int sum = 0;

	for (int i = 0; i <= end; i++)
		sum += v[i];

	int ans = sum;

	while (++end < n)
	{
		sum -= v[start++];
		sum += v[end];
		ans = max(ans, sum);
	}

	cout << ans;

	return 0;
}
profile
개인 공부 정리

0개의 댓글