BOJ 2559 : 수열

EHminShoov2J·2023년 9월 7일
0

CPP/코딩테스트

목록 보기
18/25
post-thumbnail

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

누적합

반복 횟수가 많기 때문에 누적합으로 풀어야 하는 문제

min 예외처리

해당 문제에서 처음에 최소값을 -1로 두고 풀어서 계속해서 오류가 발생하였다.

최솟값이나, 최댓값을 설정할때 범위를 벗어나는 값으로 설정하자. ex) -987654321

코드

#include <iostream>

using namespace std;

int N;
int K;
int acc[100010];
int sum;
int ans = -10000;

int main(){
    //배열 입력 받아서, 누적합 배열을 만들어주자. 
    cin >> N >> K;
    for(int i = 0; i < N; i++){ 
        int a;
        cin >> a;
        sum += a;
        acc[i+1] = sum; // 1부터 넣어줌. >> 이렇게 하면 3 ~ 1 까지의 누적합을 3-1로 가능 
    }
    
    for(int i = 0; i < N - K + 1; i++ ){ 
        if(acc[i+ K] - acc[i] > ans) ans = acc[i+K] - acc[i];
    }

    cout << ans;
}

0개의 댓글