BOJ_2559 - 수열

5672 단어 bojboj

문제/코드 링크

풀이

  • 누적 합을 이용하여 풀었다.

  • 초기 answer의 값을 arr[0] ~ arr[k - 1]의 합으로 지정해준다.

  • temp = temp + arr[i] - arr[i - k]으로 한 칸씩 오른쪽으로 당긴 후 값이 현재 answer보다 크다면 answer를 갱신 해준다.

Code

#include <iostream>
#include <vector>

using namespace std;

int n, k;
int answer;
vector<int> arr;

void solve()
{
    int temp = 0;

    answer = 0;

    for (int i = 0; i < k; ++i) {
        temp += arr[i];
    }
    answer = temp;

    for (int i = k; i < n; ++i) {
        temp += arr[i];
        temp -= arr[i - k];

        if (answer < temp) {
            answer = temp;
        }
    }
}

int main()
{
    cin >> n >> k;
    arr.resize(n);

    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }
    solve();

    cout << answer << '\n';

    return 0;
}

좋은 웹페이지 즐겨찾기