μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- λ°μ΄ν°λ² μ΄μ€
- λ°±μ€
- 그리λ
- ν°μ€ν 리μ±λ¦°μ§
- κΉμ΄μ°μ νμ
- LIS
- νλ‘κ·Έλλ¨Έμ€
- μ λ ¬
- DP
- μμνμ
- λ¨Έμ§μνΈ
- λλΉμ°μ νμ
- ꡬν
- μν
- νμ΄μ¬
- λ³ν©μ λ ¬
- λμ κ³νλ²
- μ€λΈμ
- SQL
- κ·Έλννμ
- μλ£κ΅¬μ‘°
- μκ³ λ¦¬μ¦
- DFS
- db
- μμꡬνκΈ°
- μ°μ μμν
- BFS
- κ·Έλν
- λμ ν©
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 1699λ²: μ κ³±μμ ν© - C++ λ³Έλ¬Έ
λ¬Έμ
μ΄λ€ μμ°μ Nμ κ·Έλ³΄λ€ μκ±°λ κ°μ μ κ³±μλ€μ ν©μΌλ‘ λνλΌ μ μλ€. μλ₯Ό λ€μ΄ 11=32+12+12(3κ° ν)μ΄λ€. μ΄λ° ννλ°©λ²μ μ¬λ¬ κ°μ§κ° λ μ μλλ°, 11μ κ²½μ° 11=22+22+12+12+12(5κ° ν)λ κ°λ₯νλ€. μ΄ κ²½μ°, μνμ μν¬λΌν μ€λ “11μ 3κ° νμ μ κ³±μ ν©μΌλ‘ ννν μ μλ€.”λΌκ³ λ§νλ€. λν 11μ κ·Έλ³΄λ€ μ μ νμ μ κ³±μ ν©μΌλ‘ ννν μ μμΌλ―λ‘, 11μ κ·Έ ν©μΌλ‘μ¨ ννν μ μλ μ κ³±μ νμ μ΅μ κ°μλ 3μ΄λ€.
μ£Όμ΄μ§ μμ°μ Nμ μ΄λ κ² μ κ³±μλ€μ ν©μΌλ‘ ννν λμ κ·Έ νμ μ΅μκ°μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ°μ Nμ΄ μ£Όμ΄μ§λ€. (1 ≤ N ≤ 100,000)
μΆλ ₯
μ£Όμ΄μ§ μμ°μλ₯Ό μ κ³±μμ ν©μΌλ‘ λνλΌ λμ κ·Έ μ κ³±μ νμ μ΅μ κ°μλ₯Ό μΆλ ₯νλ€.
DPλ₯Ό μ΄μ©νμ¬ ν μ μλ λ¬Έμ .
μ²μμ μ κ·Όνλ λ°©μμ Nλ³΄λ€ μμ μ μ€ κ°μ₯ ν° μ κ³±μλΆν° λΉΌλκ°λ λ°©μμ΄μλλ°, κ·Έλ κ² νλλ λ΅μ΄ λ€λ₯΄κ² λμ€λ κ²½μ°λ€μ΄ λ§μλ€. μ΄μ¨κ±°λ λ΅μ΄ μ λλ‘ λμ€μ§ μλλ€λ κ²μ μ κ·Ό λ°©μμ΄ νλ Έλ€λ κ²μ΄κΈ° λλ¬Έμ, λ€λ₯Έ λ°©λ²μ μκ°ν΄μ€μΌνλ€.
ꡬκΈμ νμ λΉλ¦° κ²°κ³Ό, μ κ³±μ νμ μ΅μ κ°μλ₯Ό ꡬν΄μ£Όλ λ°©μμ λ€μκ³Ό κ°λ€.
1λΆν° NκΉμ§μ μ κ³±μ νμ μ΅μ κ°μλ₯Ό λ΄μ λ°°μ΄ D[]λ₯Ό μ μΈν΄μ£Όκ³ , i = j2 + (i - j2) μΈ μ μ μ΄μ©νμ¬ Nλ³΄λ€ μμ μ μ€ κ°μ₯ ν° μ κ³±μλΆν°κ° μλ, κ°μ₯ μμ 1λΆν° λΉΌκ°λ©° κ°μ₯ μ΅μκ° λλ D[i]μ κ°μ λΉκ΅νλ€.
μ΄ λ, D[j2]λ νμ 1μ΄ λκΈ° λλ¬Έμ κΈ°μ‘΄μ D[i]μ D[i - j2] + 1μ κ°μ λΉκ΅ν΄κ°λ©° νμ΄ μ΅μ κ°μκ° λλ κ²½μ°λ₯Ό μ μ₯ν΄μ€λ€.
νμ D[i]λ iλ³΄λ€ μμ κ°μ΄ λκΈ° λλ¬Έμ, μ²μμλ D[i] = iλ‘ μ΄κΈ°νν΄μ€λ€.
18μ μλ‘ λ€μ΄λ³΄μ.
1. D[18] = min(D[18], D[17] + 1), D[17] = 2 ( 42 + 12 )
D[18] = min(18, 3) = 3
2. D[18] = min(D[18], D[14] + 1), D[14] = 3 ( 32 + 22 + 12 )
D[18] = min(3, 4) = 3
3. D[18] = min(D[18], D[9] + 1)
D[18] = min(3, 2) = 2
4. D[18] = min(D[18], D[2] + 1)
D[18] = min(2, 3) = 2
λ°λΌμ, D[18] = 2 ( 32 + 32 )κ° λλ€.
μ½λ
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
int DP(int num);
int min(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> D(num + 1, 0);
for(int i = 1; i <= num; i++) {
D[i] = i;
}
for(int i = 1; i <= num; i++) {
for(int j = 1; j * j <= i; j++) {
D[i] = min(D[i], D[i - j * j] + 1);
}
}
return D[num];
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 2225λ²: ν©λΆν΄ - C++ (0) | 2021.08.02 |
---|---|
[λ°±μ€] 9461λ²: νλλ° μμ΄ - C++ (0) | 2021.08.01 |
[λ°±μ€] 11054λ²: κ°μ₯ κΈ΄ λ°μ΄ν λ λΆλΆ μμ΄ - C++ (0) | 2021.07.28 |
[λ°±μ€] 9465λ²: μ€ν°μ»€ - C++ (0) | 2021.07.27 |
[λ°±μ€] 11722λ²: κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄ - C++ (0) | 2021.07.26 |