본문 바로가기

하루하나코딩

백준 2294 : 동전 2 c++

코드

#include <iostream>

using namespace std;

bool compare(int a, int b){
	return a > b;
}

int main(){
	int n, k;
	int price[101];
	int dp[10001];
	
	cin >> n >> k;
	
	for(int i = 1; i <=k; i++){
		dp[i] = 10001;
	}
	
	for(int i = 0; i < n; i++){
		cin >> price[i];
		
		for(int j = price[i]; j <= k; j++){
			dp[j] = min(dp[j], dp[j-price[i]]+1);
		}
	}
	
	if(dp[k]==10001) cout << -1;
	else cout << dp[k];

	return 0;
}

알게된점

2중반복문으로 구하는 dp는 생각하기 너무 어려운 것 같다.

다음에 한번 더 풀어보면서 복습해보아야겠다.

dp[j] = min(dp[j], dp[j-price[i]]+1); 이 수식을 생각하는게 참 어려운 것 같다.

'하루하나코딩' 카테고리의 다른 글

백준 11047 : 동전 0 c++  (0) 2023.01.13
백준 2133 : 타일채우기  (0) 2023.01.13
백준 9461 : 파도반 수열 c++  (0) 2023.01.12
백준 2293 : 동전 1 c++  (0) 2023.01.11
백준 9465 : 스티커 c++  (0) 2023.01.10