less than 1 minute read

사용언어

Visual studio 2019 C++

문제링크 : https://www.acmicpc.net/problem/2559

수열 풀이

이 문제는 N일의 온도가 주어지고 연속하는 K일의 합이 가장 큰 값을 구하는 문제당

첫날부터 쭉 더하고 K일만큼 더해지면 max값 비교를 하고 (더해진날 - K - 1)일의 온도를 빼주면 된다!

#include <iostream>
#include <algorithm>

using namespace std;

int arr[100000];
int N, K;

int main() {
	cin >> N >> K;

	for (int i = 0; i < N; i++)
		cin >> arr[i];

	int sum = 0;
	int idx = 0;
	int max_val = -987654321;
	for (int i = 0; i < N; i++) {
		sum += arr[i];
		idx++;
		if (idx == K) {
			max_val = max(max_val, sum);
			sum -= arr[i - K + 1]; // 연속한 날의 합이므로 제일 첫번째 날은 빠지게됨
			idx--; // 하루 빠짐
		}
	}
	cout << max_val;
}

Categories:

Updated:

Comments