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인지를 기준으로 둔 후 계산 속도를 비교해보아도 좋을 것 같다.