[백준] 구간합 2559 수열 🎯

seunghyun·2023년 8월 8일
0

Test

목록 보기
9/20

2559 수열 🎯

문제 링크

문제 접근

  • K1N 사이의 정수라고 했기 때문에 1~(10만-1) 의 값을 가진다.

  • 문제에서 중요했던 점은 최솟값을 정하는 것이다. 문제에서 최솟값을 구하라고 한다면 최댓값부터 내려가야 한다. (반대로 최댓값을 구하라면 최솟값부터 갱신하며 올라가야 한다) 그렇다면 최솟값을 무엇으로 정하는가?

  • 최악의 경우 -100 * 100000 - 1 이 될 것이다. 그런데 문제마다 좀 다르므로 넉넉하게 오차를 4 정도 두어서 ret = -10000004; 로 설정했다.

전체 코드

#include<iostream>
using namespace std;
int n, k, temp, psum[100001], ret = -10000004;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); 
    cout.tie(NULL);
    
    cin >> n >> k;
    
    for(int i=1; i<=n; i++)
    {
        cin >> temp; 
        psum[i] = psum[i-1] + temp;
    }
    for(int i=k; i<=n; i++)
    {
        ret = max(ret, psum[i] - psum[i-k]);
    }
    cout << ret << '\n';
    return 0;
}

0개의 댓글