2294번: 동전 2

Memo


나눗셈 연산은 비싸다

void solve()
{
	size_t ind;

	for (size_t i = 0 ; i < n ; i++)
	{
		ind = coins[i];
		for (size_t j = ind; j <= k ; j++)
		{
			if (dp[j - ind] != _MAX)
				dp[j] = std::min(dp[j], dp[j - ind] + 1);
			else if (!(j % ind))
				dp[j] = j / ind;
		}
	}
}
void solve()
{
	size_t ind;

	for (size_t i = 0 ; i < n ; i++)
	{
		ind = coins[i];
		for (size_t j = ind; j <= k ; j++)
		{
			if (!(j % ind))
				dp[j] = j / ind;
			else if (dp[j - ind] != _MAX)
				dp[j] = std::min(dp[j], dp[j - ind] + 1);
		}
	}
}
void solve()
{
	size_t ind;

	for (size_t i = 0 ; i < n ; i++)
	{
		ind = coins[i];
		dp[ind] = 1;
		for (size_t j = ind; j <= k ; j++)
			if (dp[j - ind] + 1 < dp[j])
				dp[j] = dp[j - ind] + 1;
	}
}