728x90
입력을 7을 하였을때, 출력이 4가 나와야한다. 이것이 어떻게 된 것인지 고민을 해보았는데 7 = 1^2 + 1^2 + 1^2 + 2^2 이렇게 1^2 이 3개와 2^2이 1개 총 4개가 나오게 된다면 7이 될 수 있다.
이것도 최소갯수를 구해야하고 이전것과 비교하려면 동적 계획법을 사용할 수 있다.
import java.util.Scanner;
public class SumOfSquares {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] dp = new int[N+1];
// dp[0] = 0;
// dp[1] = 1;
//dp값 입력해놓기.
for (int i = 1; i <= N; i++) {
dp[i] = i;
}
for (int i = 2; i <= N; i++) {
for (int j = 1; j * j <= i; j++) {
dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
}
}
System.out.println(dp[N]);
}
}
728x90
'백준' 카테고리의 다른 글
백준 1920 - Java (0) | 2024.10.12 |
---|---|
백준 18110 - Java (0) | 2024.10.12 |
백준 1912 - Java (0) | 2024.10.05 |
백준 15650 - Java (1) | 2024.09.26 |
백준 15649 -Java (0) | 2024.09.26 |