반응형
https://leetcode.com/problems/perfect-squares/
완전제곱수를 구해두고, n을 만들 수 있는 완전제곱수의 최소 개수를 구해줍니다.
class Solution {
public:
vector<int> s;
int dp[10001] = {0};
int numSquares(int n) {
for(int i=1; i*i<=n; i++)
s.push_back(i * i);
return dfs(n);
}
int dfs(int n) {
if(n == 0) return 0;
else if(n < 0) return INT_MAX;
if(dp[n]) return dp[n];
dp[n] = INT_MAX;
for(int i = s.size() - 1; i>=0; i--) {
dp[n] = min(dp[n], dfs(n - s[i]));
}
return ++dp[n];
}
};
반응형
'Algorithm' 카테고리의 다른 글
LeetCode 1463. Cherry Pickup II (0) | 2024.02.12 |
---|---|
LeetCode 368. Largest Divisible Subset (0) | 2024.02.10 |
LeetCode 451. Sort Characters By Frequency (0) | 2024.02.07 |
LeetCode 1457. Pseudo-Palindromic Paths in a Binary Tree (0) | 2024.01.25 |
LeetCode 1239. Maximum Length of a Concatenated String with Unique Characters (0) | 2024.01.25 |