안녕 세상아,

[c++/백준] 2559 수열 본문

백준

[c++/백준] 2559 수열

돈 많은 백수가 되고싶다 2023. 5. 13. 16:01

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

 

2559번: 수열

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

www.acmicpc.net

투 포인터 이건 잘 모르겠고 일단 최댓값 갱신하면서 문제를 해결하였다. 

 

누적합을 구한 후 연속적인 날짜의 수 마다 끊어준 후 그 전 누적값을 빼주면 구할 수 있다. 계속 최댓값을 갱신하면서 마지막 최댓값을 출력해주면 된다. 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int arr[100005];
int maxSum = -1000001;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int t, n;
	cin >> t >> n;

	//누적합 구하기
	for (int i = 1; i <= t; i++) {
		int tem;
		cin >> tem;

		arr[i] = arr[i - 1] + tem;
	}
    //최댓값 갱신하기
	for (int i = n; i <= t; i++) {
		maxSum = max(maxSum, arr[i] - arr[i - n]);
	}
	cout << maxSum;
	return 0;
}

'백준' 카테고리의 다른 글

[c++/백준] 17413 단어 뒤집기 2  (0) 2023.05.16
[c++/백준] 9461 파도반 수열  (0) 2023.05.14
[c++/백준] 2512 예산  (1) 2023.05.13
[c++/백준] 15657 N과 M (8)  (0) 2023.05.12
[c++/백준] 2579 계단 오르기  (0) 2023.05.12