알고리즘/백준
[백준] 2839설탕배달 c++
오오오니
2022. 5. 28. 20:51
dp문제이다.
2중 for문을 통해서 풀어줬다.
3키로 봉지와 5키로 봉지와 조합을 해서 만들 수 있는 무게여야하고
최소의 개수의 봉지를 사용해야한다.
sugar[3]과 sugar[5]를 1로 초기화 해줬다.
해당 무게를 만들 수 있는 조합을 안에 있는 for문으로 다 검사해주어서 최소의 개수를 sugar[i]에 넣어주었다.
#include<iostream>
#include<algorithm>
using namespace std;
int sugar[5001];
int main()
{
int n;
cin >> n;
for (int i = 0; i < 5001; i++)
sugar[i] = 5000;
sugar[3] = 1;
sugar[5] = 1;
for (int i = 3; i <= n; i++)
{
for (int j = 3; j <= i; j++)
{
sugar[i] = min(sugar[j] + sugar[i - j],sugar[i]);
}
}
if (sugar[n] == 5000)
cout << -1;
else
cout << sugar[n];
}