https://www.acmicpc.net/problem/1912
๋ฌธ์
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;
}
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1309๋ฒ: ๋๋ฌผ์ (0) | 2023.11.13 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 10844๋ฒ: ์ฌ์ด ๊ณ๋จ ์ (0) | 2023.11.08 |
[BOJ][C++] ๋ฐฑ์ค 2491๋ฒ: ์์ด (0) | 2023.04.17 |
[BOJ][C++] ๋ฐฑ์ค 9625๋ฒ: BABBA (0) | 2023.04.13 |
[BOJ][C++] ๋ฐฑ์ค 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ (0) | 2023.01.30 |