μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- κ·Έλννμ
- κΉμ΄μ°μ νμ
- μν
- μμꡬνκΈ°
- db
- ν°μ€ν 리μ±λ¦°μ§
- λ°±μ€
- LIS
- μ λ ¬
- λ°μ΄ν°λ² μ΄μ€
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- νλ‘κ·Έλλ¨Έμ€
- λ¨Έμ§μνΈ
- ꡬν
- μμνμ
- μκ³ λ¦¬μ¦
- DFS
- BFS
- λ³ν©μ λ ¬
- SQL
- DP
- μ°μ μμν
- λμ ν©
- κ·Έλν
- 그리λ
- νμ΄μ¬
- λμ κ³νλ²
- μλ£κ΅¬μ‘°
- μ€λΈμ
- λλΉμ°μ νμ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 2156λ²: ν¬λμ£Ό μμ - C++ λ³Έλ¬Έ
λ¬Έμ
ν¨μ£Όλ ν¬λμ£Ό μμνμ κ°λ€. κ·Έ κ³³μ κ°λλ, ν μ΄λΈ μμ λ€μν ν¬λμ£Όκ° λ€μ΄μλ ν¬λμ£Ό μμ΄ μΌλ ¬λ‘ λμ¬ μμλ€. ν¨μ£Όλ ν¬λμ£Ό μμμ νλ €κ³ νλλ°, μ¬κΈ°μλ λ€μκ³Ό κ°μ λ κ°μ§ κ·μΉμ΄ μλ€.
- ν¬λμ£Ό μμ μ ννλ©΄ κ·Έ μμ λ€μ΄μλ ν¬λμ£Όλ λͺ¨λ λ§μ μΌ νκ³ , λ§μ νμλ μλ μμΉμ λ€μ λμμΌ νλ€.
- μ°μμΌλ‘ λμ¬ μλ 3μμ λͺ¨λ λ§μ€ μλ μλ€.
ν¨μ£Όλ λ μ μλ λλ‘ λ§μ μμ ν¬λμ£Όλ₯Ό λ§λ³΄κΈ° μν΄μ μ΄λ€ ν¬λμ£Ό μμ μ νν΄μΌ ν μ§ κ³ λ―Όνκ³ μλ€. 1λΆν° nκΉμ§μ λ²νΈκ° λΆμ΄ μλ nκ°μ ν¬λμ£Ό μμ΄ μμλλ‘ ν μ΄λΈ μμ λμ¬ μκ³ , κ° ν¬λμ£Ό μμ λ€μ΄μλ ν¬λμ£Όμ μμ΄ μ£Όμ΄μ‘μ λ, ν¨μ£Όλ₯Ό λμ κ°μ₯ λ§μ μμ ν¬λμ£Όλ₯Ό λ§μ€ μ μλλ‘ νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μλ₯Ό λ€μ΄ 6κ°μ ν¬λμ£Ό μμ΄ μκ³ , κ°κ°μ μμ μμλλ‘ 6, 10, 13, 9, 8, 1 λ§νΌμ ν¬λμ£Όκ° λ€μ΄ μμ λ, 첫 λ²μ§Έ, λ λ²μ§Έ, λ€ λ²μ§Έ, λ€μ― λ²μ§Έ ν¬λμ£Ό μμ μ ννλ©΄ μ΄ ν¬λμ£Ό μμ΄ 33μΌλ‘ μ΅λλ‘ λ§μ€ μ μλ€.
μ λ ₯
첫째 μ€μ ν¬λμ£Ό μμ κ°μ nμ΄ μ£Όμ΄μ§λ€. (1≤n≤10,000) λμ§Έ μ€λΆν° n+1λ²μ§Έ μ€κΉμ§ ν¬λμ£Ό μμ λ€μ΄μλ ν¬λμ£Όμ μμ΄ μμλλ‘ μ£Όμ΄μ§λ€. ν¬λμ£Όμ μμ 1,000 μ΄νμ μμ΄ μλ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μ΅λλ‘ λ§μ€ μ μλ ν¬λμ£Όμ μμ μΆλ ₯νλ€.
DPλ₯Ό μ¬μ©νλ λ¬Έμ μ€ μ‘°κΈ κΉλ€λ‘μ λ λ¬Έμ .
μ¬μ€... μ€λκΉμ§λ§ ν΄λ μ΄κ² μ λ΅μ΄ μ΄λ°μ§ μ΄ν΄λ₯Ό λͺ»νλ λ¬Έμ λ€. νμλ μμλλ‘ νλμ© νμ΄μ€μ΄λΌ μλ νμ΄νλ €λ λ¬Έμ κ° λ°λ‘ μμλλ° μ€λ νμλ λ¬Έμ κ° ν¬λμ£Ό μμ λ¬Έμ μ λ§€μ° λΉμ·ν΄μ μ리λ₯Ό μ΄ν΄ν λμ κΉλ¨ΉκΈ° μ μ μΌλ₯Έ ν¬μ€ν νλ€.
ν¬λμ£Όλ λ μκΉμ§ μ°λ¬μ λ§μ€ μ μμ§λ§, μΈ μμ μ°λ¬μ λ§μμ§ λͺ»νλ€. κ·Έλ¬λ―λ‘ Nλ²μ§Έ μμ λ§μκ² λ μ°¨λ‘λΌκ³ κ°μ νμ λ λμ¬ μ μλ μν©μ λ€μκ³Ό κ°λ€.
- (N - 1)λ²μ§Έ μμ λ§μμ§ μμ κ²½μ°
- (N - 1)λ²μ§Έ μμ λ§μ κ²½μ°
1λ²μ μν©μ (N - 1)λ²μ§Έ μμ λ§μμ§ μκ³ κ±΄λλ°μμΌλ―λ‘, (N - 2)λ²μ§Έ μκΉμ§ λ§μ ν¬λμ£Όμ μμ Nλ²μ§Έ μμ λ΄κΈ΄ μμ λν΄μ€λ€. μ΄μ κ°μ μν©μ μμΌλ‘ νννλ©΄ λ€μκ³Ό κ°λ€.
D[N] = D[N - 2] + wine[N]
2λ²μ μν©μ (N - 1)λ²μ§Έ μμ λ§μ ¨μΌλ―λ‘, μ°λ¬μ μΈ μμ λ§μ€ μ μκΈ° λλ¬Έμ (N - 2)λ²μ§Έ μμ 건λλ°κ²λλ€. κ·Έλ κ² λμ΄ (N - 3)λ²μ§Έ μκΉμ§ λ§μ ν¬λμ£Όμ μμ (N - 1)λ²μ§Έ μμ λ΄κΈ΄ μκ³Ό Nλ²μ§Έ μμ λ΄κΈ΄ μμ λν΄μ€λ€. μ΄λ₯Ό μμΌλ‘ νννλ©΄ λ€μκ³Ό κ°λ€.
D[N] = D[N - 3] + wine[N - 1] + wine[N]
μ΄ λ, 1λ²κ³Ό 2λ² μ€ λ μ€μ μ΄λ κ²½μ°κ° λ λ§μ κ²½μ°μΈμ§ λͺ¨λ₯΄κΈ° λλ¬Έμ λΉκ΅ν΄μ£Όλ ν¨μλ₯Ό μ¬μ©νμ¬ λ ν° κ°μ κ°λ €λΈλ€. λ°λΌμ μ νμμ λ€μκ³Ό κ°λ€.
D[N] = max(D[N - 2] + wine[N], D[N - 3] + wine[N - 1] + wine[N])
κ·Έλ¬λ μ¬κΈ°μ λ κ³ λ €ν΄μΌ λ μ€μν μ μ Nλ²μ§Έ μμ λ§μμ§ μμμ κ²½μ°, μ¦ λ μμ μ°μμΌλ‘ μλ§μ ¨μ κ²½μ°λ κ³ λ €ν΄μΌλλ€.
μλ₯Ό λ€μ΄ { 10, 13, 1, 2, 5, 11 } μ μμ μ νμλ§ μ΄μ©νμ¬ νλ©΄ 10, 13, 2, 11 μ΄ μ νλμ΄ 36μ΄ λμ¨λ€. νμ§λ§ μ€μ λ΅μ 10, 13, 5, 11λ‘ 39κ° λμμΌ νλ€. λ°λΌμ μμ κ°μ΄ ꡬν D[N]κ³Ό D[N - 1]μ κ°μ λ€μ νλ² λΉκ΅νμ¬ λ ν° κ°μ΄ λμ€λ κ²½μ°λ₯Ό μ€μ D[N]μ κ°μ λμ ν΄μΌλλ€.
D[N] = max(D[N], D[N - 1])
λ¬Έμ λ Bottom-up λ°©μμΌλ‘ νμλ€.
μ½λ
#include <cstdio>
#define MAX 10003
int DP(int num);
int max(int num1, int num2) { return num1 > num2 ? num1 : num2; }
int main(void) {
int n;
scanf("%d", &n);
printf("%d\n", DP(n));
return 0;
}
int DP(int num) {
int wine[MAX] = { 0 };
int memo[MAX] = { 0 };
for(int i = 3; i < (num + 3); i++) {
scanf("%d", &wine[i]);
}
for(int i = 3; i < (num + 3); i++) {
memo[i] = max(memo[i - 2] + wine[i], memo[i - 3] + wine[i - 1] + wine[i]);
memo[i] = max(memo[i - 1], memo[i]);
}
return memo[num + 2];
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 10844λ²: μ¬μ΄ κ³λ¨μ - C++ (0) | 2021.07.19 |
---|---|
[λ°±μ€] 2579λ²: κ³λ¨ μ€λ₯΄κΈ° - C++ (0) | 2021.07.18 |
[λ°±μ€] 9095λ²: 1, 2, 3 λνκΈ° - C++ (0) | 2021.07.16 |
[λ°±μ€] 11727λ²: 2Γn νμΌλ§ 2 - C++ (0) | 2021.07.13 |
[λ°±μ€] 11726λ²: 2Γn νμΌλ§ - C++ (0) | 2021.07.12 |