-
백준 1699 제곱수의 합 동적계획법 활용 풀이 ( Java )Problem Solving/Java 2019. 11. 1. 15:54반응형1234567891011121314151617181920212223242526272829303132333435363738public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int n = Integer.parseInt(br.readLine());// 142를 넣으면 3이 나와야 한다int[] d = new int[n + 1];// 최소 갯수 저장할 배열 변수// d[n] = n을 제곱수들의 합으로 표현할 때 그 항의 최소 갯수// d[n] = d[n-i^2] + 1 (마지막에 어떤수의 제곱이 올 때 = (i^2)항이 하나니까 1)for (int i = 1; i <= n; i++) {// i부터 n까지d[i] = i;// i가지 있다고 초기화 하고 시작 ( 모든 수는 1^2의 합만으로 나타낼 수 있으니! )for (int j = 1; j * j <= i; j++) {// 제곱의 수가 N보다 클수는 없으니 i (N) 까지 반복하며if (d[i] > d[i - j * j] + 1) {// d[i]와 d[i - j * j] + 1 비교해서 작으면d[i] = d[i - j * j] + 1;// 최소 갯수 변경}}}}}반응형
'Problem Solving > Java' 카테고리의 다른 글
백준 15988 1,2,3 더하기 3 동적계획법 활용 풀이 ( Java ) (0) 2019.11.01 백준 1912 연속합 동적계획법 활용 풀이 ( Java ) (0) 2019.11.01 백준 14002 가장 긴 증가하는 부분 수열 4 동적계획법 활용 풀이 ( Java ) (0) 2019.11.01 백준 11053 가장 긴 증가하는 부분 수열 동적계획법 활용 풀이 (Java) (0) 2019.11.01 백준 2193 이친수 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.11.01