[BOJ 2539] 수열

xeonu·2022년 6월 30일
0

코딩테스트

목록 보기
1/7
post-thumbnail

문제링크

소스코드

#include <cmath>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, k, a, sum = 0, tmp;
    vector<int> v;
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> a;
        v.push_back(a);
    }

    for (int i = 0; i < k; i++) {
        sum += v[i];
    }
    tmp = sum;
    for (int i = k; i < n; i++) {
        tmp = tmp - v[i - k] + v[i];
        sum = max(tmp, sum);
    }

    cout << sum << endl;
}

인덱스 0부터 k길이만큼의 합을 구한 후 그 다음 부분합을 구할 때는 첫 원소를 빼고 새로운 원소를 넣어주는 식으로 부분합을 새로 구했다. 기존 부분합과 새로운 부분합의 최대값을 변수에 저장해주면된다.

profile
백엔드 개발자가 되기위한 여정

0개의 댓글