코테 공부

[DP]문제#9.제곱수의 합(☆)

DaEun_ 2022. 5. 11. 17:50

https://www.acmicpc.net/problem/1699

 

1699번: 제곱수의 합

어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다

www.acmicpc.net

import java.util.Scanner;

//제곱수의 합
public class Main {

	static int n;
	static int d[];
	public static void main(String[] args) {
		
		Scanner in=new Scanner(System.in);
		n=in.nextInt();	
		d=new int[n+1];
	
		d[1]=1;
		for(int i=2;i<=n;i++) {
			if(Math.pow(i, 2)<=n) d[(int) Math.pow(i, 2)]=1;
			if(d[i]==1) continue;
			d[i]=i;
			for(int j=1;j<=i/2;j++) {
				d[i]=Math.min(d[i], d[j]+d[i-j]);
			}
		}
		System.out.println(d[n]);	
	}
}

'코테 공부' 카테고리의 다른 글

[DP]문제#11.동전2(☆)  (0) 2022.05.11
[DP]문제#10. 1로 만들기  (0) 2022.05.11
[DP]문제#8.카드구매하기  (0) 2022.05.11
[DP]문제#7.정수삼각형(프로그래머스)  (0) 2022.05.11
[DP]문제#5.오르막수(★)  (0) 2022.05.11