https://www.acmicpc.net/problem/2435
문제 분석
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개의 수의 합 중에 최댓값을 구한 후 출력한다.
'Koala - 7기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준 / Python] 16139 - 인간-컴퓨터 상호작용 (0) | 2022.07.31 |
---|---|
[백준/JAVA] 2315번 가로등 끄기 (0) | 2022.07.30 |
[백준/C++] 11660 구간 합 구하기 5 (0) | 2022.07.29 |
[백준 / Python] 14627번 파닭파닭 (0) | 2022.07.28 |
[백준/C++] 19951번 태상이의 훈련소 생활 (0) | 2022.07.26 |