|
λ¬Έμ
μ΄λ€ μμ°μ 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)
μΆλ ₯
μ£Όμ΄μ§ μμ°μλ₯Ό μ κ³±μμ ν©μΌλ‘ λνλΌ λμ κ·Έ μ κ³±μ νμ μ΅μ κ°μλ₯Ό μΆλ ₯νλ€.
|
1.κ·μΉ
- DPμ΄λ―λ‘ μ νμκ³Ό λ©λͺ¨μ΄μ μ΄μ μ μ΄μ©ν©λλ€.
- N=7μΌ κ²½μ°, μ κ³±μλ 22,12,12,12=4 λ‘ λνλΌμ μμ΅λλ€.
2.μμ
μ νμμ μκ°ν΄ λ΄ λλ€.
N=4μΌ κ²½μ°, 4λ 12,12,12,12 μ΄κΈ°λ νμ§λ§, 22 λ§μΌλ‘λ λ§λ€μ΄λΌ μ μμ΅λλ€.
μ΄λ₯Ό λ©λͺ¨μ΄μ μ΄μ λ°°μ΄λ‘ ννν΄λ³΄λ©΄ d[4] λλ d[4β22]+1( μ¦, d[nβ(2λΆν°βn)2]+1 )μ΄ λ©λλ€.
κ²°κ΅ μ νμμ d[n] = max(d[n], d[n-(i*i)]+1) μ΄κ³ ,
μλμ²λΌ N=11μΌ κ²½μ°μ μ΄ μ νμμ μ¬μ©νλ©΄ μ λ΅κ° 3μ΄ λμ€λ κ²μ νμΈν μ μμ΅λλ€.
3.μ½λ
#include <iostream> | |
#include <algorithm> | |
using namespace std; | |
int d[100001]; | |
int main() | |
{ | |
int n; | |
cin >> n; | |
for (int i = 1; i <= n; i++){ | |
d[i] = i; | |
for (int j = 2; (j*j) <= i; j++) | |
d[i] = min(d[i], d[i-(j*j)] + 1); | |
} | |
cout << d[n] << endl; | |
return 0; | |
} |
'π€ PS(Problem Solving) > λ°±μ€(BOJ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 9461λ²-νλλ° μμ΄ (0) | 2019.07.21 |
---|---|
[λ°±μ€] 2133λ²-νμΌ μ±μ°κΈ° (0) | 2019.07.21 |
[λ°±μ€] 2579λ² - κ³λ¨ μ€λ₯΄κΈ° (0) | 2019.07.19 |
[λ°±μ€] 1912λ² - μ°μν© (0) | 2019.07.17 |
[λ°±μ€] 11054λ² - κ°μ₯ κΈ΄ λ°μ΄ν λ λΆλΆ μμ΄ (0) | 2019.07.11 |