백준 알고리즘(C++)

백준 2559번 수열(C++)

coding232624 2023. 12. 17. 22:09

문제

https://www.acmicpc.net/problem/2559

 

2559번: 수열

첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기

www.acmicpc.net

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>
using namespace std;
 
int N,K,num,maxnum,temp;
int arr[100004];
 
int main(){
    //N,K 입력받기
    cin >> N;
    cin >> K;
     
    //arr 입력받기
    for (int i = 0; i < N; i++){
        cin >> num;
        arr[i] = num;
    }
    
    //첫 maxnum 설정
    for (int i = 0; i < K;i++) maxnum += arr[i];
    temp = maxnum;
    //반복문 돌며 가장 큰 값 찾기 
     for (int i = 1; i < N-K+1; i++){
        maxnum = max(maxnum , (temp -arr[i-1]+arr[i+K-1])) ;
        temp = temp -arr[i-1+ arr[i+K-1];
    }
    cout << maxnum;
    return 0;
}
cs