백준 11047번 바로가기

나의 풀이

import sys

n, k = map(int, sys.stdin.readline().split())

coins = set()
for _ in range(n):
  coins.add(int(sys.stdin.readline().rstrip()))

count = 0
current = k

for c in sorted(coins, reverse=True):
  if current == 0:
    break
  count += (current//(c:=int(c)))
  current = current%c

print(count)

CODE REVIEW

  1. k원을 만드는데 필요한 동전의 최소 갯수를 구하는 문제. 몫과 나머지를 다루는 문제를 풀어봤다면 쉽게 해결할 수 있었다.
  2. set은 sort()메소드를 직접 사용할 수 없기에, sorted()로 감싸고, parameter로 reverse=True를 넣어주면 쉽게 해결 가능하다.