728x90
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
예제 풀이
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
10가지의 동전을 4200원의 최소 동전 개수를 구하려면
큰 숫자부터 값을 빼줘야 한다
4200 - 1000 = 3200
3200 - 1000 = 2200
2200 - 1000 = 1200
1200 - 200 = 200
200 - 100 = 100
100 - 100 = 0
총 6번
1. 동전을 내림차순으로 우선 정리 -> 큰값부터 빼줘야 하기 때문
[ 50000, 10000, 5000, 1000, 500, 100, 50, 10, 5, 1 ]
2. 4200원보다 작고 나누어지는 값 중에 가장 큰 수를 골라 우선 나눈다
4200 / 1000 = 4
1000동전이 4개 필요
4200 = 4200 - 1000 * 4
4200에서 동전 값만큼 빼준다
3. 200보다 작고 나눌 수 있는 값중에 큰 수를 고른다
200 / 100 = 2
100동전이 2개 필요
200 = 200 - 100 * 2
4. 해당 배열을 반복하면서 계산하면 완료
n,k = map(int, input().split())
coin_list = [int(input()) for i in range(n)] #n값 만큼 input
coin_list.sort(reverse=True) #내림차순 정리
count = 0
for i in coin_list: # 동전리스트 만큼 순회
q = k // i #큰 값부터 나눌수 있으면 나눠줌
k -= i * q
count += q
print(count)
728x90
반응형
'Coding Test' 카테고리의 다른 글
백준 5585 - 거스름돈 ( Python ) (2) | 2022.11.29 |
---|---|
백준 1541 - 잃어버린 괄호 ( Python ) (0) | 2022.11.27 |
백준 11399 - ATM( Python ) (0) | 2022.11.23 |
백준 2839 - 설탕 배달 ( Python ) (0) | 2022.11.17 |
프로그래머스 최솟값 만들기 - javascript (0) | 2022.09.24 |