μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- κ·Έλν
- μ λ ¬
- μν
- λ°±μ€
- λμ ν©
- μμνμ
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- λλΉμ°μ νμ
- νμ΄μ¬
- κΉμ΄μ°μ νμ
- μ°μ μμν
- μμꡬνκΈ°
- λ°μ΄ν°λ² μ΄μ€
- 그리λ
- ν°μ€ν 리μ±λ¦°μ§
- μκ³ λ¦¬μ¦
- λ¨Έμ§μνΈ
- κ·Έλννμ
- μλ£κ΅¬μ‘°
- db
- ꡬν
- μ€λΈμ
- λμ κ³νλ²
- BFS
- DFS
- λ³ν©μ λ ¬
- DP
- LIS
- νλ‘κ·Έλλ¨Έμ€
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 1912λ²: μ°μν© - C++ λ³Έλ¬Έ
λ¬Έμ
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λ₯Ό μ΄μ©νμ¬ ν μ μλ λ¬Έμ . μμ νμλ LIS λ¬Έμ λ€μμ μ‘°κΈλ§ μμ©νλ©΄ ν μ μλ€.
nκΉμ§μ μμ΄μΈ A[]μ λΆλΆν©μ κΈ°λ‘νλ λ°°μ΄ D[]λ₯Ό μ μΈνλ€. μ 체λ₯Ό λλ©΄μ (i - 1)κΉμ§μ μ΅λκ° λλ λΆλΆν©(D[i - 1])μ A[i]λ₯Ό λν μμ μ΅λ λΆλΆν©κ³Ό A[i] μκΈ° μμ μ κ°μ λΉκ΅ν λ€, A[i]κ° λ ν¬λ€λ©΄ μ§κΈκΉμ§μ λΆλΆν©μ λͺ¨λ λ²λ €μ§κ³ , A[i]λΆν° λ€μ μμνμ¬ λΆλΆν©μ ꡬνλ€. κ·Έλ¦¬κ³ νμ¬ μ΅λκ°μΌλ‘ κΈ°λ‘λμ΄μλ κ°κ³Ό λΉκ΅νμ¬ μ΅λ ν©μ κ°±μ νλ€. μ΄λ₯Ό λ€μ μμλλ‘ νννμλ©΄ λ€μκ³Ό κ°λ€.
1. D[i] κΈ°λ‘
1-1. A[i] ≤ D[i - 1] + A[i], D[i] = D[i - 1] + A[i]
1-2. A[i] > D[i - 1] + A[i], D[i] = A[i]
2. κΈ°μ‘΄μ μ΅λκ°κ³Ό λΉκ΅νμ¬ μ΅λν© κΈ°λ‘
μ½λ
#include <cstdio>
#include <vector>
using namespace std;
int DP(int num);
int max(int a, int b) { return a > b ? a : b; }
int main(void) {
int n;
scanf("%d", &n);
printf("%d\n", DP(n));
return 0;
}
int DP(int num) {
vector<int> A(num + 1, 0);
vector<int> D(num + 1, 0);
for(int i = 1; i <= num; i++) {
scanf("%d", &A[i]);
}
int result = A[1];
for(int i = 1; i <= num; i++) {
D[i] = max(A[i], D[i - 1] + A[i]);
result = max(result, D[i]);
}
return result;
}