문제 출처
11047번: 동전 0
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
www.acmicpc.net
1. 동전의 가치를 오름차순으로 입력받는다.
2. 주어진 합을 만들기 위해 필요한 최소한의 동전의 개수를 만드려면 가치가 큰 동전부터 더하면 된다.
3. 오름 차순으로 이루어진 배열을 역순으로 정렬해준다.
4. 맨 처음 더해야 하는 수가 주어진 합보다 크지 않는 것만 더해준다.
5. 그 후 주어진 합을 만들기 위해 가장큰 값들만 더해준다.
6. 사용된 동전의 갯수를 출력한다.
N,K = map(int,input().split())
valueList =[]
for i in range(N) :
valueList.append(int(input()))
valueList.reverse()
result =0
count =0
index = 0
while result!=K :
if valueList[index]>K :
index+=1
continue
else :
while (K-result)>=valueList[index] :
result += valueList[index]
count +=1
index+=1
print(count)