728x90
반응형
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원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.
예제 입력1
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
예제 출력1
6
예제 입력2
10 4790
1
5
10
50
100
500
1000
5000
10000
50000
예제 출력2
12
# Code
n, k = map(int, input().split())
coin = [int(input()) for _ in range(n)]
cnt = 0
coin.sort(reverse=True)
for i in range(n):
if coin[i] > k:
continue
else:
cnt += k//coin[i]
k = k%coin[i]
print(cnt)
# Comment
음... 꽤 고민했는데 간단한 문제였다... 머쓱..... 졸려서 머리가 잘 안굴러간 거라고 믿는다.
나는 일단 coin들을 입력받아서 큰 것부터 내림차순 정렬해주었다. 그리고 while문 안에서 만약에 k보다 큰 coin이 나오면 그냥 continue를 통해 넘어가도록 했고, 그렇지 않으면 k를 해당 coin으로 나눈 몫을 count에 더해주고 k값은 k를 coin으로 나눈 나머지로 바뀌도록 구현했다.
앞으로 엔터키를 통해서 여러 입력값을 list에 받을 필요가 있을 때 [int(input()) for _ in range(n)] 을 많이 사용해 볼 예정이다. 아주 간편하고 좋은 것 같다. ㅎㅎ
728x90
반응형
'백준 > 그리디' 카테고리의 다른 글
[백준] #1931 회의실 배정 (python) (0) | 2022.03.05 |
---|---|
[백준] #20300 서강 근육맨 (python) (0) | 2022.02.24 |
[백준] #20115 에너지 드링크 (python) (0) | 2022.02.21 |
[백준] #11399 ATM (python) (0) | 2022.02.21 |
[백준] #11508 2+1 세일 (python) (0) | 2022.02.19 |
댓글