n, k = map(int,input().split())
a = []
cnt = 0
for i in range(n):
a.append(int(input()))
for i in range(len(a)-1, -1, -1):
if k < a[i] :
continue
cnt = cnt + int(k / a[i])
k = k % a[i]
if k == 0:
break
print(cnt)
코드 설명
먼저 a 리스트에 이용가능한 동전의 가치를 저장해준다. 가장 큰 가치를 가진 동전을 먼저 사용해야 하므로 반복문을 거꾸로 수행한다.
만약 동전의 가치가 K원보다 크다면 continue를 통해 다음 반복을 수행한다. 그렇지 않다면 카운트에 그 몫을 더해준다. k 는 나머지 연산을 통해 숫자를 갱신해준다. k == 0 이 된다면 반복을 종료한다.
Point : 가장 높은 가치의 동전을 먼저 사용해야 하므로 뒤에서 부터 반복을 수행한다.
728x90
'SW개발 > 코딩테스트' 카테고리의 다른 글
[백준]2217번 로프 - 그리디 (0) | 2021.01.29 |
---|---|
[백준]5585번 거스름돈 - 그리디 (0) | 2021.01.28 |
[백준]2839번 설탕 배달 - 그리디 (0) | 2021.01.26 |
[백준]5430번 AC - 덱 (0) | 2021.01.25 |
[백준]1021번 회전하는 큐 - 덱 (0) | 2021.01.24 |