본문 바로가기
Algorithm/Baekjoon

12847_꿀 아르바이트

by 모너아링 2022. 11. 9.

▶실버4

풀이

누적 합을 이용한 문제. 배열 형태로 입력을 받아줄 때 이전까지의 누적 합을 배열에 저장한다.

이후 연속된 m을 더한 것 중 가장 큰 값을 구하는 것이므로 for문을 돌려 arr[i] - arr[i - m] 중 가장 큰 값이 답.

수가 엄청 커질 수 있으므로 자료형은 long long. 0번째 인덱스의 경우를 신경 안써줘서 100%에서 에러났다.

 

코드

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;

long long money[100001];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	int n, m;
	cin >> n >> m;
	cin >> money[0];
    //입력 받으면서 누적 합 구하기
	for (int i = 1; i < n; i++) {
		cin >> money[i];
		money[i] += money[i - 1];
	}

	//1일부터 m일까지 일하는 경우를 ans로 먼저 선언
	long long ans = money[m - 1];
	for (int i = m; i < n; i++) {
		ans = max(ans, money[i] - money[i - m]);
	}
	cout << ans;
	
}

'Algorithm > Baekjoon' 카테고리의 다른 글

11057_오르막수  (0) 2023.01.04
2003_수들의 합 2  (0) 2023.01.02
21921_블로그  (0) 2023.01.01
2583_영역 구하기  (0) 2022.11.11
3184_양  (0) 2022.11.10