알고리즘/백준

[백준 - SILVER 2] 11047. 동전 0 - Python3

jsh5408 2021. 12. 16. 11:59

11047. 동전 0

https://www.acmicpc.net/problem/11047

 

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

 

내 풀이 - 성공

from sys import stdin

N, K = map(int, stdin.readline().split())
coins = []
ans = 0

for _ in range(N):
    c = int(stdin.readline())
    coins.append(c)

for i in range(N-1, -1, -1):
    if coins[i] <= K:
        ans += K // coins[i]
        K = K % coins[i]

print(ans)

 

coins 는 이미 정렬된 상태이므로 큰 값부터 K 에서 빼기 위해 역순으로 for 문 돌리기

 

coins[i] 가 K 보다 작아지는 순간의 coins[i] 를 K 에서 최대한 많이 빼기
=> K // coins[i]
(반복문으로 직접 빼면 시간 초과)