https://www.acmicpc.net/problem/1699
💡 내 코드(C++)
/*[1699] 제곱수의 합*/
/*https://www.acmicpc.net/problem/1699 */
/*dp*/
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int n, temp = 0, j, min = 0;
int dp[100100] = { 0 };
dp[0] = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
for (j = 1;; j++) {
if ((pow(j, 2) <= i) && (i < pow(j + 1, 2)))
break;
}
min = dp[i - 1];
for (int k = 1; k <= j; k++) {
temp = pow(k, 2);
if (dp[i - temp] < min)
min = dp[i - temp];
}
dp[i] = min + 1;
}
cout << dp[n];
}
반응형
'Baekjoon > DP' 카테고리의 다른 글
[2163] 초콜릿 자르기 (0) | 2019.09.15 |
---|---|
[2133] 타일 채우기 (0) | 2019.09.15 |
[1912] 연속합 (0) | 2019.09.15 |
[1904] 01타일 (0) | 2019.09.15 |
[1463] 1로 만들기 (0) | 2019.07.23 |