728x90
https://www.acmicpc.net/problem/1699
index보다 작은 제곱수의 최소합을 확인하여 구해나가면 된다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] dp=new int[n+1];
for(int i=1;i<=n;i++) { //최댓값으로 세팅한다.
dp[i]=i;
}
for(int i=1;i<=n;i++) {
for(int j=2;j*j<=i;j++) {
if(dp[i]>dp[i-(j*j)]+1) { //i보다 작은 제곱값의 최소합을 확인!
dp[i]=dp[i-(j*j)]+1;
}
}
}
System.out.println(dp[n]);
}
}
'Java' 카테고리의 다른 글
[백준 2661] 좋은수열 (JAVA) (0) | 2023.02.15 |
---|---|
[백준 1021] 회전하는 큐 (JAVA) (0) | 2023.02.10 |
[백준 1697] 숨바꼭질 (JAVA) (0) | 2023.02.08 |
[백준 1309] 동물원 (JAVA) (0) | 2023.02.08 |
[백준 2293] 동전1 (JAVA) (0) | 2023.02.07 |