Koala - 7기/코딩테스트 준비 스터디
[백준/C++] 2435번 기상청 인턴 신현수
leoyi
2022. 7. 30. 15:27
https://www.acmicpc.net/problem/2435
2435번: 기상청 인턴 신현수
첫째 줄에 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 주어진다. N은 온도를 측정한 전체 날짜의 수이다. N은 2이상, 100이하이다. K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사
www.acmicpc.net
문제 분석
N개의 정수를 입력 받아서 연속되는 K개의 수의 합이 최대가 되는 값을 구하는 문제이다. 누적합을 사용해야 시간 제한을 어기지 않을 수 있다.
코드
#include <iostream>
#include <limits.h>
using namespace std;
int main(){
int n, k; cin>>n>>k;
int sum[n+1]; sum[0] = 0;
int tmp;
for(int i=1; i<=n; i++){
cin>>tmp;
sum[i] = tmp +sum[i-1];
}
int max = INT_MIN;
for(int i = k; i<=n; i++){
tmp = sum[i] - sum[i-k];
if(max<tmp)max = tmp;
}
cout<<max;
return 0;
}
문제 풀이
- 입력받을 수의 개수 n과 연속되는 일의 수인 k를 입력받는다.
- 배열 sum[n+1]을 선언하고 sum[0]을 0으로 둔다. 이후 n개의 수를 입력받으면서 sum에 입력받은 수까지의 누적합을 저장한다.
- 반복문을 통해 연속되는 k개의 수의 합 중에 최댓값을 구한 후 출력한다.