일반적인 최소 거스름돈 알고리즘과는 다른 문제이다. 여러모로 생각할 부분이 참 많았다.
①. N의 값이 0kg이 된다면 설탕 봉지의 개수를 출력한다.
②. N의 값이 1kg, 2kg, 4kg라면 3과 5로 나누어 떨어질 수 없으므로 -1을 출력한다.
③. N의 값이 3kg라면 3kg만큼 빼주고 3kg 설탕 봉지 하나를 추가해준다.
④. N의 값이 5kg이상인 경우를 생각하고 하부 조건으로 N이 5의 배수라면 당연히 5로 나눈 몫만큼 5kg 설탕 봉지를 추가해주면 된다. 하지만 N이 5의 배수가 아니라면 3Kg만큼 빼주고 3kg 설탕 봉지 하나를 추가해준다.
N = int(input())
cnt = 0
while True:
if N == 0:
print(cnt)
break
if N == 4 or N == 2 or N == 1:
print(-1)
break
if N == 3:
cnt += 1
N -= 3
if N >= 5:
if N % 5 == 0:
cnt += (N // 5)
N -= (N // 5) * 5
else:
N -= 3
cnt += 1