๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1699_์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ

๋ฟŒ์•ผ._. 2026. 2. 9. 12:30
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1699)

< ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ >

 

๋ฌธ์ œ ํ’€์ด 

 

์˜ˆ๋ฅผ ๋“ค์–ด 5๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” 2*2 + 1๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ

 

์ ํ™”์‹์€ dp[i] = Math.min(dp[i], 1 + dp[i - (j*j)])๊ฐ€ ๋œ๋‹ค.

 

my solution (Java)

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

public class _1699_ { // ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(bf.readLine());

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

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

		System.out.println(dp[n]);
	}
}
๋ณ€์ˆ˜)
n : ์ฃผ์–ด์ง„ ์ž์—ฐ์ˆ˜
dp : ์ œ๊ณฑ์ˆ˜ ํ•ญ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜

 

์ž์—ฐ์ˆ˜ n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์‚ดํŽด๋ณด๋ฉฐ ์ดˆ๊ธฐ๊ฐ’์„ i๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ตœ๋Œ€ (1*1)๋กœ i๋ฒˆ ๋”ํ•˜๋ฉด i๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋‹ค์Œ 1๋ถ€ํ„ฐ (j*j)๊ฐ€ i ์ดํ•˜์ผ ๋•Œ๊นŒ์ง€ ์‚ดํŽด๋ณด๋ฉฐ dp[i]์™€ 1+dp[i-(j*j)] ์ค‘ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 

 

์ตœ์ข… dp[n]์„ ์ถœ๋ ฅํ•œ๋‹ค. 



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 19621_ํšŒ์˜์‹ค ๋ฐฐ์ • 2  (0) 2026.02.11
[Baekjoon] 5953_Profits  (0) 2026.02.10
[Baekjoon] 4097_์ˆ˜์ต  (0) 2026.01.30
[Baekjoon] 18353_๋ณ‘์‚ฌ ๋ฐฐ์น˜ํ•˜๊ธฐ  (0) 2026.01.29
[Baekjoon] 14501_ํ‡ด์‚ฌ  (0) 2026.01.27