Tori의 개발 공부

[python] 11047번 - 동전 0 본문

Algorithm/백준 문제풀이

[python] 11047번 - 동전 0

B_Tori 2021. 11. 24. 12:00

문제

파이썬 문제 풀이

동전의 개수를 최소로 하기 위해서는 가장 비싼 동전으로 최대한 바꾸고, 나머지에 대해 그다음 비싼 동전으로 바꿔가면서 나머지가 0이 되도록 하는 방법을 사용한다.

import sys
input = sys.stdin.readline

N, K = list(map(int, input().rstrip().split()))

coin = []
for i in range(N) :
  coin.append(int(input().rstrip()))

coin.reverse()
count = 0

for i in coin:
  if K == 0 :
    break
  count += (K // i)
  K %= i

print(count)

가장 비싼 동전부터 접근하기 위해 오름차순으로 입력받은 동전을 reverse해줘 내림차순으로 바꾸어주었다.

count는 동전의 수이다. 현재 동전으로 줄 수 있는 만큼(몫)을 count에 더해주고 나머지를 다음 동전으로 바꾸어 주도록 K에 다시 저장하였다. 

'Algorithm > 백준 문제풀이' 카테고리의 다른 글

[python] 2606번 - 바이러스  (0) 2021.12.07
[python] 1260번 - DFS와 BFS  (0) 2021.12.07
[python] 13305번 - 주유소  (0) 2021.11.24
[python] 1931번 - 회의실 배정  (0) 2021.11.23
[python] 1541번 - 잃어버린 괄호  (0) 2021.11.23