μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- λ°±μ€
- DP
- νλ‘κ·Έλλ¨Έμ€
- ꡬν
- νμ΄μ¬
- λλΉμ°μ νμ
- λ¨Έμ§μνΈ
- μ€λΈμ
- 그리λ
- μ°μ μμν
- κ·Έλννμ
- λμ ν©
- μλ£κ΅¬μ‘°
- μν
- λμ κ³νλ²
- LIS
- λ°μ΄ν°λ² μ΄μ€
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- μμꡬνκΈ°
- BFS
- κ·Έλν
- ν°μ€ν 리μ±λ¦°μ§
- μ λ ¬
- DFS
- SQL
- κΉμ΄μ°μ νμ
- μκ³ λ¦¬μ¦
- db
- λ³ν©μ λ ¬
- μμνμ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 9465λ²: μ€ν°μ»€ - C++ λ³Έλ¬Έ
λ¬Έμ
μκ·Όμ΄μ μ¬λμ μλ₯μ΄λ 문방ꡬμμ μ€ν°μ»€ 2nκ°λ₯Ό ꡬ맀νλ€. μ€ν°μ»€λ κ·Έλ¦Ό (a)μ κ°μ΄ 2ν nμ΄λ‘ λ°°μΉλμ΄ μλ€. μλ₯μ΄λ μ€ν°μ»€λ₯Ό μ΄μ©ν΄ μ± μμ κΎΈλ―Έλ €κ³ νλ€.
μλ₯μ΄κ° ꡬ맀ν μ€ν°μ»€μ νμ§μ λ§€μ° μ’μ§ μλ€. μ€ν°μ»€ ν μ₯μ λΌλ©΄, κ·Έ μ€ν°μ»€μ λ³μ 곡μ νλ μ€ν°μ»€λ λͺ¨λ μ°’μ΄μ Έμ μ¬μ©ν μ μκ² λλ€. μ¦, λ μ€ν°μ»€μ μΌμͺ½, μ€λ₯Έμͺ½, μ, μλμ μλ μ€ν°μ»€λ μ¬μ©ν μ μκ² λλ€.
λͺ¨λ μ€ν°μ»€λ₯Ό λΆμΌ μ μκ²λ μλ₯μ΄λ κ° μ€ν°μ»€μ μ μλ₯Ό λ§€κΈ°κ³ , μ μμ ν©μ΄ μ΅λκ° λκ² μ€ν°μ»€λ₯Ό λΌμ΄λ΄λ €κ³ νλ€. λ¨Όμ , κ·Έλ¦Ό (b)μ κ°μ΄ κ° μ€ν°μ»€μ μ μλ₯Ό 맀겼λ€. μλ₯μ΄κ° λ μ μλ μ€ν°μ»€μ μ μμ μ΅λκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. μ¦, 2nκ°μ μ€ν°μ»€ μ€μμ μ μμ ν©μ΄ μ΅λκ° λλ©΄μ μλ‘ λ³μ 곡μ νμ§ μλ μ€ν°μ»€ μ§ν©μ ꡬν΄μΌ νλ€.
μμ κ·Έλ¦Όμ κ²½μ°μ μ μκ° 50, 50, 100, 60μΈ μ€ν°μ»€λ₯Ό κ³ λ₯΄λ©΄, μ μλ 260μ΄ λκ³ μ΄ κ²μ΄ μ΅λ μ μμ΄λ€. κ°μ₯ λμ μ μλ₯Ό κ°μ§λ λ μ€ν°μ»€ (100κ³Ό 70)μ λ³μ 곡μ νκΈ° λλ¬Έμ, λμμ λ μ μλ€.
μ λ ₯
첫째 μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μ Tκ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ μΌμ΄μ€μ 첫째 μ€μλ n (1 ≤ n ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λ€μ λ μ€μλ nκ°μ μ μκ° μ£Όμ΄μ§λ©°, κ° μ μλ κ·Έ μμΉμ ν΄λΉνλ μ€ν°μ»€μ μ μμ΄λ€. μ°μνλ λ μ μ μ¬μ΄μλ λΉ μΉΈμ΄ νλ μλ€. μ μλ 0λ³΄λ€ ν¬κ±°λ κ°κ³ , 100λ³΄λ€ μκ±°λ κ°μ μ μμ΄λ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€ λ§λ€, 2nκ°μ μ€ν°μ»€ μ€μμ λ λ³μ 곡μ νμ§ μλ μ€ν°μ»€ μ μμ μ΅λκ°μ μΆλ ₯νλ€.
DPλ₯Ό μ¬μ©νμ¬ ν μ μλ λ¬Έμ .
μ€ν°μ»€λ€μ μ μκ° μ΅λκ° λ μ μλ κ²½μ°λ₯Ό μκ°ν λ, μλ‘ λ³μ 곡μ νμ§ μλ κ·μΉμΌλ‘ μΈν΄ μνμ’μ°λ‘ ν μΉΈμ© μμ§μ΄λ κ²μ΄ λΆκ°λ₯νκΈ° λλ¬Έμ λκ°μ μΌλ‘ μμ§μ΄κ±°λ ν μΉΈμ λ°μ΄λμ΄ μ΄λνλ κ²½μ° λ±μ κ³ λ €ν΄λ³Ό μ μλ€. κ·Έλ¬λ ν μΉΈμ λ°μ΄λμ΄ μ΄λνλ κ²½μ°λ λκ°μ μ/μλλ‘ λ λ² μμ§μ΄λ κ²½μ°λ³΄λ€ μ μκ° λ°λμ μκ² λμ€κΈ° λλ¬Έμ, κ²°κ³Όμ μΌλ‘ μ΄λν μ μλ κ²½λ‘λ λ€μκ³Ό κ°λ€.
첫λ²μ§Έ μ€μ κΈ°μ€μΌλ‘ λκ°μ λ°λ‘ μλμ μ€ν°μ»€λ₯Ό μ ννκ±°λ, νμΉΈ λ λ¨μ΄μ Έμλ λκ°μ μλμ μ€ν°μ»€λ₯Ό μ ννλ λ°©λ²μΌλ‘ λλ μ μλ€. μΈ μΉΈ μ΄μ λ¨μ΄μ§ κ²½μ°λΆν°λ λ ν° μ μλ₯Ό λΌ μ μλ λ°©λ²μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ μ΄ λκ°μ§ κ²½μ°λ§ μκ°νλλ‘ νλ€. 그리νμ¬ iλ²μ§Έ μΉΈκΉμ§ μμλ κ°μ₯ ν° μ μλ [i - 1]μΉΈ κΉμ§μ μ μλ [i - 2]μΉΈ κΉμ§μ μ μ ν©μ λΉκ΅νμ¬ λ ν° κ°μ μ νν λ€ ν΄λΉ μΉΈμ μ μλ₯Ό λνλ€. μ΅μ’ μ μΌλ‘ 0λ²μ§Έ μ€μμ μμνλ κ²½μ°μ 1λ²μ§Έ μ€μμ μμνλ κ²½μ°λ₯Ό λΉκ΅ν΄μ λ ν° κ°μ΄ κ²°κ³Όκ°μ΄ λλ€. μ νμμ λ€μκ³Ό κ°λ€.
D[0][i] = sticker[0][i] + MAX(D[1][i - 1], D[1][i - 2])
D[1][i] = sticker[1][i] + MAX(D[0][i - 1], D[0][i - 2])
λ¬Έμ λ Bottom-up λ°©μμΌλ‘ νμλ€.
μ½λ
#include <cstdio>
#define MAX 100001
int DP(int num);
int main(void) {
int t;
scanf("%d", &t);
for(int i = 0; i < t; i++) {
int n;
scanf("%d", &n);
printf("%d\n", DP(n));
}
return 0;
}
int DP(int num) {
int data[2][MAX] = { 0 }; // μ€μ μ€ν°μ»€μ μ μ μ μ₯
int memo[2][MAX] = { 0 }; // λμ λ μ μ ν© μ μ₯
for(int i = 0; i < 2; i++) {
for(int j = 1; j <= num; j++) {
scanf("%d", &data[i][j]);
}
}
memo[0][1] = data[0][1]; // case 1. 1ν 1μ΄λΆν° μμ
memo[1][1] = data[1][1]; // case 2. 2ν 1μ΄λΆν° μμ
for(int i = 2; i <= num; i++) {
memo[0][i] = data[0][i] + (memo[1][i - 1] > memo[1][i - 2] ? memo[1][i - 1] : memo[1][i - 2]);
memo[1][i] = data[1][i] + (memo[0][i - 1] > memo[0][i - 2] ? memo[0][i - 1] : memo[0][i - 2]);
}
return memo[0][num] > memo[1][num] ? memo[0][num] : memo[1][num];
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1699λ²: μ κ³±μμ ν© - C++ (0) | 2021.07.30 |
---|---|
[λ°±μ€] 11054λ²: κ°μ₯ κΈ΄ λ°μ΄ν λ λΆλΆ μμ΄ - C++ (0) | 2021.07.28 |
[λ°±μ€] 11722λ²: κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄ - C++ (0) | 2021.07.26 |
[λ°±μ€] 11055λ²: κ°μ₯ ν° μ¦κ° λΆλΆ μμ΄ - C++ (0) | 2021.07.25 |
[λ°±μ€] 11053λ²: κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ - C++ (0) | 2021.07.24 |