티스토리 뷰

www.acmicpc.net/problem/1699

 

1699번: 제곱수의 합

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

www.acmicpc.net

1. 제목

주어진 자연수 N을 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 문제.

 

입)

7

 

출)

4

 

2. 풀이

import java.util.*;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] D = new int[N+1];
        for (int i = 1; i <= N; i++) {
            // 최소값으로 초기화
            D[i] = i;
            for (int j = 1; j * j <= i; j++) {
                int L = D[i - j * j] + 1;
                if (D[i] > L) {
                    D[i] = L;
                }
            }
        }
        System.out.println(D[N]);
    }
}

D[i] -> i를 제곱수의 합으로 나타냈을 때, 필요한 항의 최소 개수

D[i] = min(D[i-j*j])+1, 1 <= j * j <= i

위 점화식을 이용해서 해결.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함