N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하시오. 1 <= N <= 1000 이며, 각 동전은 1000000이하의 자연수만큼의 가치를 가지고 있다.
23분 정도 사용해서 아무리 고민을 해봐도, 정렬을 한다 라는 아이디어까지만 갔고, 그 이상으로 어떻게 접근해야 할지 몰라서 못했다.
단순한 상황을 가정해보자. [1,2,3] 의 가치를 가진 동전만 가지고 있다라고 하면, 1부터 6까지의 모든 경우의 수를 만들 수 있다.
여기에서 5의 가치를 가진 동전이 들어온다면, 지금까지의 모든 경우의 수에 5를 더해서, 6 ~ 11의 가치를 만드는 방법을 적어도 한가지는 더 만들게 된다. 따라서, 1부터 target
만큼의 조합을 만들 수 있을 때, m
의 가치를 가진 동전이 새로 들어오면 1부터 target+m
의 모든 조합을 만들 수 있다…