μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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
- μκ³ λ¦¬μ¦
- DP
- λ°±μ€
- νμ΄μ¬
- BFS
- ꡬν
- db
- LIS
- λλΉμ°μ νμ
- μ€λΈμ
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- μ°μ μμν
- ν°μ€ν 리μ±λ¦°μ§
- λμ κ³νλ²
- λμ ν©
- μλ£κ΅¬μ‘°
- μν
- λ°μ΄ν°λ² μ΄μ€
- μ λ ¬
- κ·Έλν
- DFS
- λ³ν©μ λ ¬
- 그리λ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 2579λ²: κ³λ¨ μ€λ₯΄κΈ° - C++ λ³Έλ¬Έ
λ¬Έμ
κ³λ¨ μ€λ₯΄κΈ° κ²μμ κ³λ¨ μλ μμμ λΆν° κ³λ¨ κΌλκΈ°μ μμΉν λμ°©μ κΉμ§ κ°λ κ²μμ΄λ€. <κ·Έλ¦Ό 1>κ³Ό κ°μ΄ κ°κ°μ κ³λ¨μλ μΌμ ν μ μκ° μ°μ¬ μλλ° κ³λ¨μ λ°μΌλ©΄ κ·Έ κ³λ¨μ μ°μ¬ μλ μ μλ₯Ό μ»κ² λλ€.
μλ₯Ό λ€μ΄ <κ·Έλ¦Ό 2>μ κ°μ΄ μμμ μμλΆν° 첫 λ²μ§Έ, λ λ²μ§Έ, λ€ λ²μ§Έ, μ¬μ― λ²μ§Έ κ³λ¨μ λ°μ λμ°©μ μ λλ¬νλ©΄ μ΄ μ μλ 10 + 20 + 25 + 20 = 75μ μ΄ λλ€.
κ³λ¨ μ€λ₯΄λ λ°λ λ€μκ³Ό κ°μ κ·μΉμ΄ μλ€.
- κ³λ¨μ ν λ²μ ν κ³λ¨μ© λλ λ κ³λ¨μ© μ€λ₯Ό μ μλ€. μ¦, ν κ³λ¨μ λ°μΌλ©΄μ μ΄μ΄μ λ€μ κ³λ¨μ΄λ, λ€μ λ€μ κ³λ¨μΌλ‘ μ€λ₯Ό μ μλ€.
- μ°μλ μΈ κ°μ κ³λ¨μ λͺ¨λ λ°μμλ μ λλ€. λ¨, μμμ μ κ³λ¨μ ν¬ν¨λμ§ μλλ€.
- λ§μ§λ§ λμ°© κ³λ¨μ λ°λμ λ°μμΌ νλ€.
λ°λΌμ 첫 λ²μ§Έ κ³λ¨μ λ°κ³ μ΄μ΄ λ λ²μ§Έ κ³λ¨μ΄λ, μΈ λ²μ§Έ κ³λ¨μΌλ‘ μ€λ₯Ό μ μλ€. νμ§λ§, 첫 λ²μ§Έ κ³λ¨μ λ°κ³ μ΄μ΄ λ€ λ²μ§Έ κ³λ¨μΌλ‘ μ¬λΌκ°κ±°λ, 첫 λ²μ§Έ, λ λ²μ§Έ, μΈ λ²μ§Έ κ³λ¨μ μ°μν΄μ λͺ¨λ λ°μ μλ μλ€.
κ° κ³λ¨μ μ°μ¬ μλ μ μκ° μ£Όμ΄μ§ λ μ΄ κ²μμμ μ»μ μ μλ μ΄ μ μμ μ΅λκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
μ λ ₯μ 첫째 μ€μ κ³λ¨μ κ°μκ° μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° ν μ€μ νλμ© μ μΌ μλμ λμΈ κ³λ¨λΆν° μμλλ‘ κ° κ³λ¨μ μ°μ¬ μλ μ μκ° μ£Όμ΄μ§λ€. κ³λ¨μ κ°μλ 300μ΄νμ μμ°μμ΄κ³ , κ³λ¨μ μ°μ¬ μλ μ μλ 10,000μ΄νμ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ κ³λ¨ μ€λ₯΄κΈ° κ²μμμ μ»μ μ μλ μ΄ μ μμ μ΅λκ°μ μΆλ ₯νλ€.
DPλ₯Ό μ΄μ©νλ λ¬Έμ .
2156λ² ν¬λμ£Ό μμλ¬Έμ μ λμΌνκ² μ κ·Όνμ§λ§, μ‘°κΈ λ κ°λ¨ν λ¬Έμ μ΄λ€.
κ³λ¨μ νλ²μ ν μΉΈμ΄λ λ μΉΈκΉμ§λ§ μ΄λν μ μκ³ , μΈ μΉΈμ μ°λ¬μ μ€λ₯΄λ κ²μ λΆκ°λ₯νλ€. λ°λΌμ nλ²μ§Έ κ³λ¨μ λ°κ² λ μ°¨λ‘λΌκ³ νμ λ κ°λ₯ν μν©μ λ€μκ³Ό κ°λ€.
- (n - 1)λ²μ§Έ κ³λ¨μ λ°μ§ μμ κ²½μ°
- (n - 1)λ²μ§Έ κ³λ¨μ λ°μμ κ²½μ°
1μ κ²½μ° nλ²μ§Έ κ³λ¨κΉμ§μ μ μλ (n - 2)λ²μ§Έ κ³λ¨μ λ°μμ λ κΉμ§μ μ μ ν©μ nλ²μ§Έ κ³λ¨μ μ μλ₯Ό λν΄μ£Όλ©΄ λλ€. μ΄λ₯Ό μμΌλ‘ νννλ©΄ λ€μκ³Ό κ°λ€.
D[n] = D[n - 2] + stair[n]
2μ κ²½μ° μ°λ¬μ μΈ κ³λ¨μ λ°λ κ²μ΄ λΆκ°λ₯νλ―λ‘ (n - 2)λ²μ§Έ κ³λ¨μ 건λ λ΄ μ μ΄ λλ€. λ°λΌμ (n - 3)λ²μ§Έ κ³λ¨μ λ°μμ λ κΉμ§μ μ μ ν©μ (n - 1)λ²μ§Έ κ³λ¨μ μ μμ nλ²μ§Έ κ³λ¨μ μ μλ₯Ό λν΄μ€λ€. μ΄λ₯Ό μμΌλ‘ νννλ©΄ λ€μκ³Ό κ°λ€.
D[n] = D[n - 3] + stair[n - 1] + stair[n]
1κ³Ό 2 μ€ μ΄λ κ²½μ°μ μ μμ ν©μ΄ λ ν°μ§ μ μ μκΈ° λλ¬Έμ κ° λΉκ΅λ₯Ό ν΅ν΄ D[n]μ μ΅μ’ μ μΌλ‘ κ²°μ ν΄μ€λ€. λ°λΌμ μ΄ λ¬Έμ μ μ νμμ λ€μκ³Ό κ°λ€.
D[n] = max(D[n - 2] + stair[n], D[n - 3] + stair[n - 1] + stair[n])
λ μΉΈμ μ°μμΌλ‘ λ°μ΄λμ μ μκ³ , λ§μ§λ§ κ³λ¨μ λ°λμ λ°μμΌ νλ€λ 쑰건 λλ¬Έμ ν¬λμ£Ό μμ λ¬Έμ μ μ‘°κΈ μμ΄ λ¬λΌμ§λ€. μμ μλ₯Ό λ€μλ { 10, 13, 1, 2, 5, 11 } μ ν¬λμ£Ό μμ λ¬Έμ μμλ 39κ° λμ€μ§λ§, μ΄ λ¬Έμ μμλ μμ 쑰건λλ¬Έμ 36μ΄ λμ€λ κ²μ΄ λ§λ€.
λ¬Έμ λ bottom-up λ°©μμΌλ‘ νμλ€.
μ½λ
#include <cstdio>
#include <vector>
using namespace std;
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) {
vector<int> stair(num + 1, 0);
vector<int> score(num + 1, 0);
for(int i = 1; i <= num; i++) {
scanf("%d", &stair[i]);
}
if(num >= 1) score[1] = stair[1];
if(num >= 2) score[2] = stair[1] + stair[2];
for(int i = 3; i <= num; i++) {
score[i] = max(score[i - 2] + stair[i], score[i - 3] + stair[i - 1] + stair[i]);
}
return score[num];
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 11057λ²: μ€λ₯΄λ§ μ - C++ (0) | 2021.07.20 |
---|---|
[λ°±μ€] 10844λ²: μ¬μ΄ κ³λ¨μ - C++ (0) | 2021.07.19 |
[λ°±μ€] 2156λ²: ν¬λμ£Ό μμ - C++ (0) | 2021.07.17 |
[λ°±μ€] 9095λ²: 1, 2, 3 λνκΈ° - C++ (0) | 2021.07.16 |
[λ°±μ€] 11727λ²: 2Γn νμΌλ§ 2 - C++ (0) | 2021.07.13 |