본문 바로가기

Algorithm/Baekjoon BOJ

[백준][C++] 2559: 수열

반응형

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

 

2559번: 수열

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

www.acmicpc.net

 

 

 

 


- 문제

 

  수열이 주어지면 K 길이의 합이 최대인 경우를 구하는 문제다.

 

 


- 해설

 

1 2 3 4 5 6 7 8 9라는 수열이 있으면

 

4 부터 8까지의 합은

 

8까지의 합 - 3까지의 합이 되므로

 

반복문을 총 길이 - K번 만큼 돌려서 최대값을 구하면 된다.

 

 

 

 


- 풀이

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N, K, temp, maxNum = -99999999;
    cin >> N >> K;
    vector<int> v(N + 1);

    v[0] = 0;
    for (int i = 1; i <= N; i++)
    {
        cin >> temp;
        v[i] = v[i - 1] + temp;
    }
    for (int i = 0; i + K <= N; i++)
    {
        if (v[i + K] - v[i] > maxNum)
        {
            maxNum = v[i + K] - v[i];
        }
    }
    cout << maxNum;

    return 0;
}

 

 


- 새롭게 알게 된 점

 

 

반응형