GitHubSeob
C++ / 백준 / 2559 / 수열 본문
문제 |
https://www.acmicpc.net/problem/2559
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
문제풀이 |
연속된 K개만큼의 누적합 중 가장 큰 값을 구하는 문제이다.
먼저 온도를 입력받는다.
0번 온도부터 K개만큼 온도의 합을 sum에 누적 합한다.
그다음 현재 누적합에서 가장 처음에 더한 값을 뺀다. (idx - K 번째 온도)
idx - K번째 온도값을 뺐으니 idx번째 온도를 더해 더한 온도의 개수를 K로 맞춘다.
max 함수를 이용해 answer의 최댓값을 갱신한다.
코드 |
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N(0), K(0);
cin >> N >> K;
vector<int>temp(N, 0);
int answer(0), sum(0);
for (int idx = 0; idx < N; ++idx) cin >> temp[idx];
for (int idx = 0; idx < K; ++idx) sum += temp[idx];
answer = sum;
for (int idx = K; idx < N; ++idx) {
sum -= temp[idx - K];
sum += temp[idx];
answer = max(answer, sum);
}
cout << answer;
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 24498 / blobnom (0) | 2023.12.12 |
---|---|
C++ / 백준 / 2428 / 표절 (0) | 2023.12.09 |
C++ / 백준 / 5464 / 주차 (1) | 2023.10.08 |
C++ / 백준 / 10025 / 게으른 백곰 (0) | 2023.09.27 |
C++ / 백준 / 2641 / 다각형그리기 (0) | 2023.09.24 |