개발/알고리즘

백준 2559번 수열 C++

daisy-day 2021. 1. 7. 22:47

문제

2559번: 수열 (acmicpc.net)

 

2559번: 수열

첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기

www.acmicpc.net

코드

#include<bits/stdc++.h>

using namespace std;

int n, k, num, first, last, temp, maxNum;
int arr[100001];

int main()
{
	ios_base::sync_with_stdio(false); 
	cin.tie(NULL); 
	cout.tie(NULL);
	
	cin >> n >> k;
	for (int i = 0; i < n; i++)
	{
		cin >> num;
		arr[i] = num;
	}

	for (int i = 0; i < k; i++)
	{
		temp += arr[i];
		maxNum = temp;
	}

	last = k;
	int index = n - k;
	while (index--)
	{
		int num = temp - arr[first] + arr[last];
		if (maxNum < num)
			maxNum = num;

		temp = num;
		first++;
		last++;
	}

	cout << maxNum;

	return 0;
}

 

걸린 시간

1시간

 

헤맨 부분 

처음 temp값 구하는 for문에서 maxNum = temp 안해줌