https://www.acmicpc.net/problem/11047
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
걸리는 시간은 똑같지만 코드 길이를 줄여봤다
일단 거스름돈 배열을 만들고,
가장 뒤부터 배열을 순회하면서 거스름돈이 나누어지는 만큼 cnt에 더한다.
<처음 풀이>
N, K = map(int, input().split())
money = []
for i in range(N):
temp = int(input())
money.append(temp)
# print(money)
cnt = 0
while K>0:
for i in range(N-1, -1, -1):
if K//money[i] == 0:
continue
elif K//money[i] > 0:
cnt += K//money[i]
K = K % money[i]
print(cnt)
<최종 코드>
N, K = map(int, input().split())
money = []
for i in range(N):
temp = int(input())
money.append(temp)
cnt = 0
while K:
for i in range(N-1, -1, -1):
if K//money[i] > 0:
cnt += K//money[i]
K = K % money[i]
print(cnt)
'파이썬 알고리즘' 카테고리의 다른 글
[파이썬] SW 문제해결 기본 5일차 - Magnetic (0) | 2022.12.07 |
---|---|
[파이썬] 백준 15649 N과 M (1) (0) | 2022.12.06 |
[파이썬] 백준 1436 영화감독 숌 (부르트포스) (0) | 2022.11.30 |
[파이썬] SWEA SW 문제해결 응용 7일차 - 행렬찾기 (0) | 2022.11.14 |
재귀 심화: 조합과 중복조합 (0) | 2022.10.31 |