본문 바로가기
Problem Solving/Baekjoon

[백준] 17626 Four Squares - Dynamic Programming / Java

by graycode 2022. 12. 6.

 문제 링크

 

17626번: Four Squares

라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public 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());

        int[] dp = new int[n + 1];

        final int inf = Integer.MAX_VALUE;
        int min;
        for (int i = 1; i <= n; i++) {
            min = inf;
            for (int j = 1; j * j <= i; j++)
                min = Math.min(min, dp[i - j * j]);

            dp[i] = min + 1;
        }

        bw.write(String.valueOf(dp[n]));
        bw.flush();
    }

}

댓글