본문 바로가기

Algorithm/Baekjoon BOJ

[백준][C++] 1912: 연속합

반응형

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

 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

 

 

 


- 문제

 

  연속적인 수 중에서 가장 큰 값일 때를 구하는 문제다.

 

 


- 해설

 

이전의 값이 음수더라도 지금까지 더한 값이 0보다 크면 계속 더해가는게 좋고, 0보다 작으면 새로 시작하는게 낫다는 생각으로 문제를 풀면 된다.

 

 

 

 


- 풀이

#include <iostream>
using namespace std;

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

    int n, temp, maxNum = -1001, now = 0;
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        cin >> temp;
        now += temp;
        if (now > maxNum)
            maxNum = now;
        if (now < 0)
            now = 0;
    }
    cout << maxNum;

    return 0;
}

 

 


- 새롭게 알게 된 점

 

 

반응형

'Algorithm > Baekjoon BOJ' 카테고리의 다른 글

[백준][C++] 11659: 구간 합 구하기 4  (0) 2022.11.10
[백준][C++] 2580: 스도쿠  (2) 2022.11.08
[백준][C++] 9461: 파도반 수열  (0) 2022.11.04
[백준][C++] 10773: 제로  (0) 2022.11.03
[백준][C++] 10828: 스택  (0) 2022.11.03