동전 교환

동전 교환

n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. (각각의 동전은 몇개라도 사용할 수 있다.)

이전의 제곱 수의 합 문제와 비슷하다. 모든 동전을 다 볼 수 밖에 없다.

d[n] = min(d[n], d[n - coins[i]] + 1)

d[0] = 0;
for (int i = 0; i < N; i++) {
    for (int j = coins[i]; j <= K; j++) {
        d[j] = Math.min(d[j], d[j - coins[i]] + 1);
    }
}

유사문제 풀어보기