Koala - 7기/기초 알고리즘 스터디

[백준/python] 2839번 설탕 배달

벼리빛 2022. 7. 10. 18:37

문제

코드

import sys
int = sys.stdin.readline

n = int(input()) #설탕의 총량

a = aa = n // 5

for i in range(a+1, 0, -1):
    b = n - (5*aa) #5kg을 빼고 남은 설탕
    c = b // 3 #3kg으로 묶은 설탕봉지 수
    nn = n - ((5*aa) + (3*c))
    if nn == 0:
        print(aa + c)
        break
    else:
        aa -= 1
        if aa == -1:
            print('-1')
            break
        continue

 

문제풀이

흔히 볼 수 있는  최소 개수 문제이다.

가장 적은 봉지 개수를 구하는 것은 어렵지 않으나, 이 문제의 관건은 남은 설탕이 0으로 떨어지지 않을 경우 -1을 출력하는 부분에 있을 것이다.

나는 5kg으로 먼저 소분한 후 남은 설탕을 3kg으로 정확히 나누어 떨어지는지의 여부를 기준으로 반복문을 작성하였다.

이때 묶고 남은 설탕이 0인지 아닌지에 따라 정답을 판별하였는데, 나머지가 0인지를 기준으로 둔 후 계산 속도를 비교해보아도 좋을 것 같다.