반응형
1699번: 제곱수의 합
어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다
www.acmicpc.net
D[N]을 모두 1로 채웠을때가 최대기 때문에
D[i] = i(최대값)으로 하고 min 연산을 한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] D = new int[N+1];
for (int i = 1; i <= N; i++) {
D[i] = i;
for (int j = 1; j*j <= i; j++)
D[i] = Math.min(D[i], D[i-j*j]+1);
}
System.out.print(D[N]);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 15988번 1, 2, 3 더하기 3 [ Java ] (0) | 2021.05.03 |
---|---|
백준 2225번 합분해 [ Java ] (0) | 2021.05.02 |
백준 18870번 좌표 압축 [ Java ] (0) | 2021.04.30 |
백준 11659번 구간 합 구하기 4 [ Java ] (0) | 2021.04.30 |
백준 12852번 1로 만들기 2 [ Java ] (0) | 2021.04.30 |