Algorithm/BOJ

백준 2559번 C++

poopooreum 2023. 8. 8. 20:46
반응형
백준 2559번 수열

https://www.acmicpc.net/problem/2559

2559번: 수열

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

www.acmicpc.net


정답 코드

#include<iostream>
using namespace std;
int arr[100001];
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n, k;
	cin >> n >> k;
	for (int x = 0; x < n; x++) {
		cin >> arr[x];
	}
	int sum = 0, max = -987654321;
	for (int x = 0; x < n; x++) {
		if (x < k)
			sum += arr[x];
		else
			sum = sum - arr[x - k] + arr[x];
		if (x >= k-1) {
			if (max < sum)
				max = sum;
		}
	}
	cout << max;
}

문제 풀이

n개만큼 입력을 받은 후 n개의 반복문을 돌립니다.
이때 x가 k보다 작을 때는 우선 sum변수에 다 더해주고 k보다 크거나 같을 시에는 sum값과 max값을 비교해서 최댓값을 구해줍니다. 그리고 sum값의 맨 첫 번째로 더한 값은 빼주고 현재값을 더해주면서 수열의 길이를 k로 맞추면서 이동하고 비교해줍니다.

반응형