fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 24499 (C++) blobyum
최초 업로드: 2025-09-03 05:23:56
최근 수정 시간: 2025-09-03 05:24:13
게시자: rlatjwls3333
카테고리: 백준
조회수: 6
# [Silver IV] blobyum [문제 링크](https://www.acmicpc.net/problem/24499) ## 문제 설명 <p>오늘도 블롭은 배고프다. 그래서 블롭은 요리사 연우를 찾아가 맛있는 것을 달라고 부탁했다.</p> <p>연우는 귀여운 블롭에게 이왕이면 맛있는 음식을 해 주고 싶었기에, 자신이 만드는 데에 가장 뛰어난 애플파이를 만들기로 하였다. 연우는 $N$개의 애플파이를 만들었으며, 이를 원 모양으로 책상에 배치해 놓았다.</p> <p>각 애플파이는 하나의 양의 정수로 표현되며, 이는 맛있는 정도를 의미한다. (수가 클수록 더 맛있는 애플파이이다.)</p> <p style="text-align: center;"><img alt="" src="https://upload.acmicpc.net/140d5ae2-f4b2-48b6-9262-91be949de4f6/-/preview/" style="display: inline-block; max-width: 768px;"></p> <p>블롭은 $N$개의 애플파이 중 $K$개를 먹으려고 한다. 물론 블롭은 힘을 들이지 않고 먹고 싶기 때문에, 연속으로 배치되어 있는 $K$개의 애플파이를 먹으려 한다.</p> <p>블롭을 도와서 블롭이 먹을 애플파이의 맛의 합의 최댓값을 구해 주자!</p> ## 입력 <p>첫째 줄에 애플파이의 개수와 먹으려는 애플파이의 개수 $N$과 $K$가 공백으로 구분되어 주어진다.</p> <p>둘째 줄에 애플파이의 맛있는 정도를 나타내는 값인 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다.</p> ## 출력 <p>블롭이 먹을 애플파이의 맛의 합의 최댓값을 출력한다.</p> ## 풀이 원형이라 배열을 복사한 후 누적합으로 연속된 k개의 합을 빠르게 구했습니다. ``` c++ #include<bits/stdc++.h> using namespace std; int preSum[200'001]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; for(int i=1;i<=n;i++) { cin >> preSum[i]; preSum[i+n] = preSum[i]; } for(int i=1;i<=2*n;i++) preSum[i] += preSum[i-1]; int maxSum=0; for(int i=k;i<=2*n;i++) maxSum = max(maxSum, preSum[i]-preSum[i-k]); cout << maxSum; } ```