반응형
문제: https://www.acmicpc.net/problem/11047
문제 설명
더보기
문제
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
출력
첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.\
정답
N, K = map(int, input().split())
coins = []
for _ in range(N):
coins.append(int(input()))
answer = 0
for i in range(N, 0, -1):
if K >= coins[i - 1]:
answer += K // coins[i - 1]
K %= coins[i - 1]
if K == 0:
break
print(answer)
풀이
더보기
N, K = map(int, input().split())
coins = []
for _ in range(N):
coins.append(int(input()))
answer = 0
for i in range(N, 0, -1):
if K >= coins[i - 1]:
answer += K // coins[i - 1]
K %= coins[i - 1]
if K == 0:
break
print(answer)
동전의 단위가 주어지면 해당 동전으로 K원을 만드는데 필요한 동전의 최소 개수를 구하는 문제입니다. 이 문제는 그리디 유형으로 유명한 거스름돈 문제와 일치합니다. 동전의 단위가 모두 다른 동전의 배수이므로 그리디로 풀면 쉽게 해결할 수 있습니다.반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 1004번 - 어린 왕자 (0) | 2021.09.07 |
---|---|
백준 14653번 - 너의 이름은 (0) | 2021.09.06 |
백준 1012번 - 유기농 배추 / Python (0) | 2021.09.02 |
백준 1051번 - 숫자 정사각형 / Python (0) | 2021.09.02 |
백준 1003번 - 피보나치 함수 / Python (0) | 2021.09.02 |