less than 1 minute read

[no-alignment]

[no-alignment]

구현 방식

  • result 는 지금까지의 최대값을 기록하는 변수이다.
  • curr은 직전 탐색 값에서 한칸 이동했을 때의 합계를 나타내는거여서 result 대신 다른 변수를 사용했어야했는데
  • curr = result - numbers[start] + numbers[end]; 로 작성해놓아서 제대로 나오지 않았다. 다음에는 이런걸로 시간쓰지 말기..

코드

  • 최종 코드는 아래와 같다.
#include <bits/stdc++.h>

using namespace std;

void solution(int N, int K, vector<int>& numbers);

int main() {
	int N, K;
	cin >> N >> K;
	vector<int> numbers(N);
	for (int i = 0; i < N; i++) cin >> numbers[i];

	solution(N, K, numbers);

}


void solution(int N, int K, vector<int>& numbers) 
{
	int result = accumulate(numbers.begin(), numbers.begin() + K, 0);
	int curr = result;
	for (int start = 0, end = K; end < N; start++,end++)
	{
		curr = curr - numbers[start] + numbers[end];
		result = max(result, curr);
	}
	cout << result;
}