[๋ฐฑ์ค€] Four Squares

๊ฐœ๋ฐœ์ž P๊ตฐยท2025๋…„ 7์›” 23์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
40/57
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋ณด๊ธฐ - [๋ฐฑ์ค€] Four Squares

๐Ÿ“– ๋ฌธ์ œ

๋ผ๊ทธ๋ž‘์ฃผ๋Š” 1770๋…„์— ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋Š” ๋„ท ํ˜น์€ ๊ทธ ์ดํ•˜์˜ ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฆ๋ช…ํ•˜์˜€๋‹ค. ์–ด๋–ค ์ž์—ฐ์ˆ˜๋Š” ๋ณต์ˆ˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, 26์€ 52๊ณผ 12์˜ ํ•ฉ์ด๋‹ค; ๋˜ํ•œ 42ย + 32ย + 12์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์—ญ์‚ฌ์ ์œผ๋กœ ์•”์‚ฐ์˜ ๋ช…์ˆ˜๋“ค์—๊ฒŒ ๊ณตํ†ต์ ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐ”๋กœ ์ž์—ฐ์ˆ˜๋ฅผ ๋„ท ํ˜น์€ ๊ทธ ์ดํ•˜์˜ ์ œ๊ณฑ์ˆ˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 1900๋…„๋Œ€ ์ดˆ๋ฐ˜์— ํ•œ ์•”์‚ฐ๊ฐ€๊ฐ€ 15663 = 1252ย + 62ย + 12ย + 12๋ผ๋Š” ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ 8์ดˆ๊ฐ€ ๊ฑธ๋ ธ๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ์žˆ๋‹ค. ์ข€ ๋” ์–ด๋ ค์šด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” 56์ดˆ๊ฐ€ ๊ฑธ๋ ธ๋‹ค: 11339 = 1052ย + 152ย + 82ย + 52.

์ž์—ฐ์ˆ˜ย n์ด ์ฃผ์–ด์งˆ ๋•Œ,ย n์„ ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ์ œ๊ณฑ์ˆ˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

โœ ์ž…๋ ฅ

์ž…๋ ฅ์€ ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ ์ž์—ฐ์ˆ˜ย n์„ ํฌํ•จํ•˜๋Š” ํ•œ ์ค„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ, 1 โ‰คย nย โ‰ค 50,000์ด๋‹ค.

๐Ÿ“„ ์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ‘œ์ค€์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•ฉ์ดย n๊ณผ ๊ฐ™๊ฒŒ ๋˜๋Š” ์ œ๊ณฑ์ˆ˜๋“ค์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.

โœ… ์ฝ”๋“œ

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Arrays;  
  
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[] dp = new int[n + 1];  
        Arrays.fill(dp, 4);  
        dp[0] = 0;  
        dp[1] = 1;  
  
        for(int i = 2; i <= n; i++) {  
            for(int j = 1; j * j <= i; j++) { 
                dp[i] = Math.min(dp[i], dp[i - j * j] + 1);  
            }  
        }  
  
        System.out.println(dp[n]);  
    }  
}

๐Ÿงฉ ์ฝ”๋“œํ’€์ด

ํ•ด๋‹น ๋ฌธ์ œ๋Š” DP๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ ์ ํ™”์‹์ด ์ž˜ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ๋กœ ์šฐ์„  ๋ฐฐ์—ด ์ „์ฒด ๊ฐ’์„ ์ตœ๋Œ€ ๊ฐ’์ธ 4๋กœ ์ž…๋ ฅํ•ด๋‘ก๋‹ˆ๋‹ค.
์ดํ›„ ์ ํ™”์‹์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด 1๋ถ€ํ„ฐ ์•„๋ž˜์ฒ˜๋Ÿผ ์ฐจ๋ก€๋Œ€๋กœ ์ž…๋ ฅํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

1 = 121^2
2 = 12+121^2 + 1^2
3 = 12+12+121^2 + 1^2 + 1^2
4 = 222^2
5 = 22+122^2 + 1^2
6 = 22+12+122^2 + 1^2 + 1^2
7 = 22+12+12+122^2 + 1^2 + 1^2 + 1^2
8 = 22+222^2 + 2^2
9 = 323^2
10 = 32+123^2 + 1^2
11 = 32+12+123^2 + 1^2 + 1^2
12 = 32+12+12+123^2 + 1^2 + 1^2 + 1^2
13 = 32+223^2 + 2^2

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š”๋ฐ ํŒจํ„ด์ด (iโˆ’jโˆ—j)(i - j * j)์—์„œ (jโˆ—j)(j*j)๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ œ๊ณฑ์ธ (jโˆ—j)(j*j)๋Š” 1, 4, 9 ์ผ ๋•Œ์™€ ๊ฐ™์ด 1๊ฐœ์ด๋ฏ€๋กœ (iโˆ’jโˆ—j)+1(i - j * j) + 1์„ ํ•ด์ฃผ๋ฉด ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€