백준 17626번

게으른 개미개발자·2023년 2월 7일
0

algorithm

목록 보기
3/7
#include <iostream>
#include <algorithm>
#include <math.h>
#define MaxMem 50001

int dp[MaxMem] = {};

int main(){
    int n,temp,pow_temp = 0;
    std::cin >> n;
    std::fill_n(dp,n+1,MaxMem);

    dp[0] = 0;
    dp[1] = 1;
    for (int i = 2; i <=n; i++){
        temp = int(std::sqrt(i));
        for (int j = temp; j >= 1; j--){
            pow_temp = std::pow(j,2);
            if (i == pow_temp){
                dp[i] = 1;
                break;
            }
            else{
                dp[i] = std::min(dp[pow_temp] + dp[i - pow_temp],dp[i]);
            }
        }

    }

    std::cout << dp[n];
    return 0;
}
  • 배열 초기화 해주는 부분에 대해서는 크게 2가지 방법이 있다.
    - 학부생 시절 다 알았던 문법인데 까먹었다,,,
    1. std::fill_n(array,size,value);
    2. memset(array,value,size);
      • memset의 경우, memory.hstring.h 헤더에서 가져올 것
    • 자료형 기반으로 size할당해줘야함. sizeof(int)
profile
특 : 미친듯한 게으름과 부지런한 생각이 공존하는 사람

0개의 댓글