백준 12847번 꿀 아르바이트 문제풀이(C++)

YooHeeJoon·2022년 10월 14일
0

백준 문제풀이

목록 보기
29/56

백준 12847번 꿀 아르바이트

아이디어

n일부터 n+m일까지 일해서 받을 수 있는 돈의 합중에 가장 큰 값 => 누적합

	long long day[MAX]; // 급여의 합
    int num; // 해당 날짜에 받을 수 있는 급여
	day[i] = day[i-1] + num;	// 오늘day[i] 는 전날day[i-1] + 오늘급여 num

1 부터 m의 간격을 두고 누적합의 값 확인후 가장 큰 값을 구한다

문제풀이

#include<bits/stdc++.h>
using namespace std;
#define MAX 100'000 + 10
typedef long long ll;
ll day[MAX];
int n, m;
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		int num; cin >> num;
		day[i] = day[i - 1] + num;
	}
	int i = 1, j = m;
	ll sum = 0;
	while (j <= n) {
		sum = max(sum, day[j] - day[i - 1]);
		i++;
		j++;
	}
	cout << sum << '\n';
	return 0;
}

0개의 댓글