풀이


학교 알고리즘 동아리에서 제공한 마지막 그리디문제다.

주어진 N kg 의 설탕을 3 kg 과 5 kg 에 나눠담았을 때 가장 적은 봉지를 구하는 문제다.

5 kg 의 봉지가 더 많은 수량을 담을 수 있기 때문에 N kg 가 5 kg 으로 나누어떨어질 때 까지 3 kg 봉지에 설탕을 담아내면 최소한의 봉지를 만들어낼 수 있다.

이때 N 이 완전히 분배되지않을 경우 -1 을 출력하도록 조건문을 달아주면 정상적으로 작동한다.

소스코드


import sys
input = sys.stdin.readline
 
n = int(input())
ans = 0
 
while n >= 0:
    if n%5 == 0:
        ans += n//5
        print(ans)
        break
    n -= 3
    ans += 1
    if n == 0:
        print(ans)
        break
    if n < 0:
        print(-1)
        break

References