※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2435번 문제인 기상청 인턴 신현수이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2435
2435번: 기상청 인턴 신현수
첫째 줄에 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 주어진다. N은 온도를 측정한 전체 날짜의 수이다. N은 2이상, 100이하이다. K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사
www.acmicpc.net
주어진 배열의 크기 K인 구간합의 최댓값을 구하는 문제이다. 고정된 배열에서의 구간합의 최댓값을 구하는 문제이므로 prefix sum 배열을 이용해 모든 구간합을 한 번씩 구해보는 것으로 문제를 해결할 수 있다.
구간합의 최댓값이 음수가 될 수 있음에 유의해 구현하자. 모든 원소가 음수인 경우를 생각하면 그러한 경우가 있음을 어렵지 않게 알 수 있을 것이다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N, K;
int psum[101];
int ans = -1000000007;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> K;
for (int i = 1; i <= N; i++) {
cin >> psum[i];
psum[i] += psum[i - 1];
}
for (int L = 0, R = K; R <= N; L++, R++) {
ans = max(ans, psum[R] - psum[L]);
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 18133 // C++] 가톨릭대학교에 워터 슬라이드를?? (0) | 2023.08.14 |
---|---|
[BOJ 3183 // C++] Dates (0) | 2023.08.14 |
[BOJ 4593 // C++] Rock, Paper, Scissors (0) | 2023.08.14 |
[BOJ 18132 // C++] 내 이진트리를 돌려줘!!! (0) | 2023.08.13 |
[BOJ 18135 // C++] 겨울나기 (0) | 2023.08.12 |