https://www.acmicpc.net/problem/2435
문제
> 현수가 기상청 인턴에 합격에 매일 출근하여 온도를 측정하고 집에 가면 되는 일을 받았다.
> 일의 의미를 찾기 위해 10일 동안 잰 온도를 연속된 2, 5일 동안의 합을 구해 각각 가장 큰 값을 구해봤다.
> 즉, 입력으로 온도를 측정한 날짜, 연속된 날 수, 측정한 온도가 들어오면 각 연속된 날의 온도 합중 최대를 구해라.
접근
입력 받은 데이터들을 규칙에 맞게 반복하여 각각의 합을 구한다. 각각의 합들을 최대값인지 비교해 갱신하며 답을 출력한다.
문제해결
> 온도를 먼저 측정 일 수 만큼 입력 받는다.
> 각 온도를 K일수 만큼 더해주기 위해 이중반복문으로 더해줄 값들의 범위를 잡아준다.
> 최솟값(온도는 최소 -100도 이니까 K번 전부 최소일때)과 위에서 더해준 값을 비교해 더 큰 값을 갱신하고 출력한다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N, K;
cin >> N >> K;
vector<int> temp(N + 1, 0);
for (int i = 1; i < temp.size(); i++) cin >> temp[i];
int result = -100 * K;
for (int i = 1; i <= N - K + 1; i++)
{
int sum = 0;
for (int j = i; j < i + K; j++) sum += temp[j];
result = max(result, sum);
}
cout << result << '\n';
}

후기
쉽다.