나의 브을로오그으

[c++] 17626번 : Four Squares 본문

알고리즘/BaekJoon

[c++] 17626번 : Four Squares

__jhp_+ 2022. 10. 4. 14:39

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

 

17626번: Four Squares

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

www.acmicpc.net

#include <iostream>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int dp[50001] = { 0, };
	int n, j, cnt = 0;
	cin >> n;
	dp[0] = 0;
	dp[1] = 1;

	for (int i = 2; i <= n; ++i)
	{
		dp[i] = dp[i - 1];
		for (int j = 1; j * j <= i; ++j)
		{
			dp[i] = dp[i] < dp[i - j * j] ? dp[i] : dp[i - j * j];
		}
		dp[i]++;
	}

	cout << dp[n] << '\n';
	return 0;
}

'알고리즘 > BaekJoon' 카테고리의 다른 글

[c++] 7569번 : 토마토  (0) 2022.10.19
[c++] 18870번 : 좌표 압축  (0) 2022.10.12
[c++] 11727번 : 2 x n 타일링 2  (0) 2022.09.27
[c++] 11726번 : 2Xn 타일링  (0) 2022.09.20
[c++] 11724번 : 연결 요소의 개수  (0) 2022.09.20