Algorithm Study/Python

[백준 파이썬] # 11047 동전 0

728x90
반응형

Silver II

# 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

 

 

풀이

N, K = map(int, input().split())
count = 0
coin = []

for i in range(N):
    A = int(input())
    coin.append(A)

coin = sorted(coin, reverse=True)

for i in coin:
        count += K//i
        K = K%i 

print(count)

 

  • 리스트로 돈의 단위를 담는 리스트를 만들고 count를 이용해 개수를 세는 데 사용했다
  • 최소의 개수를 구하기 위해 돈의 단위가 큰 것부터 확인해야 하므로 sorted의 reverse를 이용했다
  • 단위로 나누어지는 몫을 count에 더하고 난 후 나머지를 가지고 확인해나가는 코드를 구성했다
  • 처음에 try - except 구문을 사용해 풀어야 하나 싶었지만, 출력해본 결과 굳이 사용하지 않아도 된다는 것을 확인했다