π λ¬Έμ λ§ν¬
π νμ΄ κ³Όμ
- λ€μ΄λλ―Ή νλ‘κ·Έλλ° μ νμ λ¬Έμ μ
λλ€.
- μμ°μ nμ μ΅μ κ°μμ μ κ³±μ ν©μ κ°μλ‘ νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
- 1 -> 1
- 2 -> 2
- 3 -> 3
- 4 -> 1
- 5 -> 2
- 6 -> 3
- 7 -> 4
- 8 -> 1
- 9 -> 1
- 10 -> 2
- 11 -> 3
- 12 -> 4
- 13 -> 5
- 14 -> 6
- 15 -> 7
- 16 -> 1
- μ΄λ₯Ό ν΅ν΄ μ νμμ μ΄λμ΄ λΌ μ μμ΅λλ€.
- f(n) = f(n - m * m ) + 1
- μ΄ μμ ꡬννλκ² λ¬Έμ λ₯Ό μ€μ λΆλΆμ΄μ, μ΄λ ΅λ€κ³ μκ°ν©λλ€.
- μ΄λ¬ν μμ μ΄μ©ν΄ λ°λ³΅λ¬Έμ ꡬνν΄ μ΅μκ°μ dp λ°°μ΄μ ν λΉνλ©΄ λ©λλ€.
π» μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int[] dp;
static int n;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
dp = new int[n+1];
solve();
System.out.println(dp[n]);
}
public static void solve(){
dp[1] = 1;
for(int i = 2; i< n + 1; i++){
dp[i] = Integer.MAX_VALUE;
for(int j = 1; j * j <= i; j++){
int temp = i - j * j;
dp[i] = Math.min(dp[i], dp[temp] + 1);
}
}
}
}
'Algorithm > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€ 15652λ² : Nκ³Ό M (4) (Java) (0) | 2022.01.17 |
---|---|
λ°±μ€ 11659λ² : κ΅¬κ° ν© κ΅¬νκΈ° 4(Java) (0) | 2022.01.17 |
λ°±μ€ 7662λ² : μ΄μ€ μ°μ μμ ν(Java) (0) | 2022.01.10 |
λ°±μ€ 2407λ² : μ‘°ν©(Java) (0) | 2022.01.10 |
λ°±μ€ 16928λ² : λ±κ³Ό μ¬λ€λ¦¬ κ²μ(Java) (0) | 2022.01.10 |