구현 방식
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;
}