개발공부/algorithm

[백준][python] 11047.동전0 - Greedy

so.py 2021. 3. 9. 12:16

문제

 

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

나의 코드

동전의 종류에 대한 리스트를 생성하고, 뒤에서부터 탐색을 진행해서 K보다 작거나 같은 동전에 대해 방문한다. K = 0 일때의 조건처리 역시 해주어야 한다. 

N, K = map(int, input().split())
coins = []
for i in range(N):
    C = int(input())
    coins.append(C)

cnt = 0
for j in range(N - 1, -1, -1):
    if K == 0:
        break
    if coins[j] <= K:
        # 사용할 수 있는 최대의 코인 갯수
        num = K // coins[j]
        # 코인의 개수 더해주기
        cnt += num
        K = K - num * coins[j]
        
print(cnt)