카운터에서 거스름돈 500원 , 100원 , 50원 , 10원짜리 동전이 무한히 존재 한다.
손님에게 거슬러 줘야 할 돈이 N원 일떄 거슬러 줘야 할 동전의 최소 개수를 구하시오.
거스름돈은 10의 배수이다.
거스름돈 문제에 쉽게 풀수 있는 방법은 가장 큰 금액 부터 리턴 시켜 주면 된다.
거스름돈의 시간 복잡도는 이다.
n = int(input())
moneys = [500,100,50,10]
answer = 0
for m in moneys:
answer += n // m
n = n % m
print(answer)
n, m, k = map(int, input().split())
nums = list(map(int, input().split()))
nums.sort(reverse=True)
answer = 0
i = 0
count = 0
while count != m:
if i == 0:
answer += (nums[i] * k)
i += 1
count += k
continue
else:
if nums[i] == nums[i - 1]:
answer += (nums[i] * k)
count += k
else:
answer += nums[i]
count += 1
i -= 1
continue
print(answer)
n,m = map(int,input().split())
nums = [list(map(int,input().split())) for _ in range(n)]
smalls = []
for num in nums:
smalls.append(min(num))
print(max(smalls))
n,k = map(int,input().split())
count = 0
while n != 1:
if n % k != 0:
count += 1
n -= 1
continue
n = n // k
count += 1
print(count)
n, k = map(int, input().split())
result = 0
while True:
# 17 4 라면 17 // 4 = 4 * 4 = 16
target = (n // k) * k # 1씩 더할 개수를 측정하는 target
result += (n - target) # 원래 N에서 - target 을 뺸 만큼이 1의 개수
n = target # 1을 뺴고 남은 수
if n < k: # k 가 더 높은 경우 break
break
result += 1 # K로 나누기 전에 +1
n //= k # k로 나누기
# 마지막으로 남은 수에 대하여 1씩 뺴기
result += (n - 1)
print(result)