정신과 시간의 방
작성일
2024. 8. 24. 23:24
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>
using namespace std;

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

	int n = 0, k = 0, temp = 0;
	int result = -100000;
	int psum[100001] = { 0 };

	cin >> n >> k;

	for (int i = 1; i <= n; i++) 
	{
		cin >> temp;
		psum[i] = psum[i - 1] + temp;
	}

	for (int i = k; i <= n; i++) 
	{
		result = max(result, psum[i] - psum[i - k]);
	}

	cout << result;

	return 0;
}

 

  • 메모
    지난 문제에 이어서 구간합을 사용해서 풀이한 문제이다.
    이때 기존에 저장된 result값과 현재 구해진 구간합의 값을 비교해 더 큰 값이 result에 할당되도록 max 함수를 사용했다.