본문 바로가기

알고리즘

[C++] BOJ-1699

 

 

문제풀이


1. cache배열의 인덱스 값을 제곱수로 생각하고 점화식을 구현하였다.

cache[j] = min(cache[j], cache[j-dp_pow(i)]+1)

 

2. 전체 소스

 

#include <iostream>

using namespace std;

int dp_pow(int a){
	return a*a;
}

int main(){
	ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int N;
	
	cin >> N;
	int cache[N+1] = {};
	

	for(int i = 1; i<=N; i++){
		cache[i] = 987654321;
	}
	
	for(int i = 1; dp_pow(i) <= N; i++){
		for(int j = dp_pow(i); j<=N; j++){
			cache[j] = min(cache[j], cache[j-dp_pow(i)]+1);
		}
	}
	
	
	cout << cache[N];
}

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

[C++] BOJ-1931  (0) 2019.10.11
[C++] BOJ-1916  (0) 2019.10.11
[C++] BOJ-1654  (0) 2019.10.11
[C++] BOJ-1520  (0) 2019.10.11
[C++] BOJ-1238  (0) 2019.10.11