hades

[Baekjoon] 17626๋ฒˆ: Four Squares ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 17626๋ฒˆ: Four Squares

hades1 2024. 7. 29. 20:54

๐Ÿฅ… ๋ฌธ์ œ

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

 

๐Ÿ” ์„ค๊ณ„

 ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋Š” ๋„ท ํ˜น์€ ๊ทธ ์ดํ•˜์˜ ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ทธ ์ž์—ฐ์ˆ˜๋ฅผ ์ด๋ฃจ๋Š” ์ œ๊ณฑ์ˆ˜๋“ค์˜ ์ˆ˜๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, 61 = 5^2 + 6^2์ด๋ฏ€๋กœ 5^2์˜ ์ตœ์†Œ ์ œ๊ณฑ์ˆ˜ ๊ฐœ์ˆ˜์ธ 1๊ณผ 6^2์˜ ์ตœ์†Œ ์ œ๊ณฑ์ˆ˜ ๊ฐœ์ˆ˜์ธ 1์„ ๋”ํ•ด ์ œ๊ณฑ์ˆ˜ 2๊ฐœ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๐Ÿ‘Š ํ’€์ด

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

int n;
vector<int> dp(50001, 1e9 + 7);

int main(void)
{	
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> n;
	
	dp[0] = 0;
	for (int i = 0; i <= n; i++) {
		for (int j = 1; j * j <= n; j++) {
			if (i + j * j > n) {
				continue;
			}
			dp[i + j * j] = min(dp[i + j * j], dp[i] + 1);
		}
	}

	cout << dp[n] << "\n";

	return 0;
}

 

๐Ÿ“ ๋ฉ”๋ชจ

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋Š” ํ•ญ์ƒ ์ดˆ๊นƒ๊ฐ’๊ณผ ๋ฒ”์œ„ ์„ค์ •์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.