import sys
N, K = map(int, input().split())
money = list(map(int, sys.stdin.read().splitlines()))
cnt = 0
for m in money[::-1]:
if(m > K) : continue
cnt += (K//m)
K = K % m
if(K == 0): break
print(cnt)
- 동전들이 오름차순으로 차례대로 주어졌기 때문에 이를 고려하여 입력받은 동전 리스트를 역순으로 만들어서 for 문에 넣었음
- 최소 동전 개수를 저장하기 위한 cnt 라는 변수를 생성 => 이를 이용해서 반복문에서 계산식 저장
- K가 목표하고자 하는 금액이고, 반복문에서의 m은 보유하고 있는 동전 (큰 금액부터 하나씩) 이므로 m이 목표인 K보다 크다면 continue를 통해 아래의 코드를 수행하지 않고 바로 더 작은 금액의 동전 m으로 넘어가도록 하였다.
- 보유 동전인 m이 K보다 작거나 같은 경우, K//m 한 정수값을 cnt 변수에 저장한 뒤 K를 K%m 한 나머지 금액으로 업데이트 해준다.
- 마지막에는 계속 업데이트되는 목표 금액 K 값이 0이 되면 for문을 탈출하도록 하여 비효율적인 추가 계산을 줄였음
'Python' 카테고리의 다른 글
[백준/Python] 12789 : 도키도키 간식드리미 (0) | 2024.11.03 |
---|---|
[백준/Python] 1541 : 잃어버린 괄호 (1) | 2024.11.03 |
[백준/Python] 9461 : 파도반 수열 (1) | 2024.10.05 |
[백준/Python] 1193 : 분수찾기 (0) | 2024.10.05 |
[백준/Python] 2346 : 풍선 터뜨리기 (1) | 2024.10.05 |