[C++] 리트코드 279. Perfect Squares

2024. 2. 16. 00:05·Algorithm/HackerRank, LeetCode
class Solution 
{
public:
    int numSquares(int n) 
    {
        vector<int> dp(n+1, n+1);
        vector<int> dpNum;

        int sum = 1;
        dp[sum] = 1;
        dpNum.push_back(sum);

        for(int i = 3; i < n+1; i+=2)
        {
            sum += i;
            if(sum <= n)
            {
                dp[sum] = 1;
                dpNum.push_back(sum);
            }
            else
            {
                break;
            }
        }

        for(int i = 1; i <= n; i++)
        {
            for(int j = 0; j < dpNum.size(); j++)
            {
                int sumNum = i + dpNum[j];
                
                if(sumNum <= n)
                {
                    dp[sumNum] = min(dp[sumNum], dp[i] + dp[dpNum[j]]);
                }
            }
        }

        return dp[n];
    }
};

 

풀이

1. 완전제곱수를 저장한다.

2. dp1~12를 순회하면서 i + 완전제곱수가 가능한지 확인하고 해당 dp에 있는 count와 비교해서 작은 값을 넣어준다.

 

느낀점

DP문제의 특성을 더 파악해야 될 것 같다.

 

https://leetcode.com/problems/perfect-squares/

 

저작자표시 (새창열림)

'Algorithm > HackerRank, LeetCode' 카테고리의 다른 글

[C++] 리트코드 Count and Say  (0) 2024.02.26
[C++] 리트코드 221. Maximal Square  (1) 2024.02.16
[C++] 해커랭크 Cut the Tree  (0) 2023.12.26
'Algorithm/HackerRank, LeetCode' 카테고리의 다른 글
  • [C++] 리트코드 Count and Say
  • [C++] 리트코드 221. Maximal Square
  • [C++] 해커랭크 Cut the Tree
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    티스토리챌린지
    JPA
    SpringSecurity
    spring
    오블완
    JWT
    백준
    dp
    프로그래머스
    dfs
    Java
    위클리 챌린지
    c++ 기초 플러스
    알고리즘
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] 리트코드 279. Perfect Squares
상단으로

티스토리툴바