๐Ÿ•๏ธ ICPC Sinchon/Dynamic Programming

[BOJ][C++] ๋ฐฑ์ค€ 1912๋ฒˆ: ์—ฐ์†ํ•ฉ

์„ ๋‹ฌ 2023. 11. 3. 12:22
๋ฐ˜์‘ํ˜•

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

 

1912๋ฒˆ: ์—ฐ์†ํ•ฉ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” -1,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ž„์˜์˜ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ์ค‘ ์—ฐ์†๋œ ๋ช‡ ๊ฐœ์˜ ์ˆ˜๋ฅผ ์„ ํƒํ•ด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•ฉ ์ค‘ ๊ฐ€์žฅ ํฐ ํ•ฉ์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋‹จ, ์ˆ˜๋Š” ํ•œ ๊ฐœ ์ด์ƒ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 ์ด๋ผ๋Š” ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž. ์—ฌ๊ธฐ์„œ ์ •๋‹ต์€ 12+21์ธ 33์ด ์ •๋‹ต์ด ๋œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” -1,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

DP๋ฅผ ์ด์šฉํ•˜์ž

v[i] = i๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ํฌํ•จํ•œ ์ตœ๋Œ€ ์—ฐ์† ํ•ฉ

 

๋ฒกํ„ฐ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด๋„ ๋˜์ง€๋งŒ ๋‚˜๋Š” ์ธํ’‹์— ์‚ฌ์šฉํ•œ ๋ฒกํ„ฐ๋ฅผ ์žฌ์‚ฌ์šฉํ–ˆ๋‹ค

(์ง์ „์— ์ƒ๊ฐ์—†์ด ์ด์ค‘๋ฐฐ์—ด๋กœ dpํ–ˆ๋‹ค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ ๋‹นํ•จ)

 

// ํ’€์ด : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> v(n);
    for(int i=0; i<n; i++) {
        cin >> v[i];
    }
    
    for(int i=1; i<n; i++) {
        v[i] = max(v[i-1]+v[i], v[i]);
    }
    
    cout << *max_element(v.begin(), v.end());
    
    return 0;  
}
๋ฐ˜์‘ํ˜•