백준 설탕 배달 코드 및 해설 (파이썬)
2021. 10. 4. 12:46ㆍalgorithm
반응형
https://www.acmicpc.net/problem/2839
최대한 적은 봉지를 가져가려고 하므로 5kg 봉지를 최대한 활용해야 한다. 우선 q5에 5kg 봉지의 최대 개수를 저장한다. q5를 0까지 하나씩 줄여가면서 5kg 봉지를 해당 개수만큼 들고 갔을 때, 남은 무게가 3의 배수인지 확인한다. 3의 배수라면 5kg 봉지 개수 + 남은 무게를 3으로 나눈 몫이 정답이 된다. 최대한 5kg 봉지를 많이 가져가야 하므로 조건이 충족되면 바로 break로 for loop를 빠져나온다.
answer는 -1로 초기화하여 한 번도 조건을 만족하지 않아 Nkg을 정확히 만들 수 없는 경우 -1을 그대로 출력하도록 한다.
import sys
N = int(sys.stdin.readline())
# 5kg 봉지로 최대한 옮길 때, 필요한 봉지의 개수
q5 = N // 5
# 정확히 Nkg 만들지 못하면 -1 출력
answer = -1
# q5에서 하나씩 빼가면서 0까지
# ex) q5가 3이면, i는 3,2,1,0
for i in range(q5,-1,-1):
# 5kg으로 최대한 옮기고 남은 무게가 3의 배수일 때
if (N - i*5) % 3 == 0:
answer = i + (N - i * 5) // 3
break
print(answer)
반응형
'algorithm' 카테고리의 다른 글
백준 로봇 청소기 코드 및 해설 (파이썬) (0) | 2021.10.11 |
---|---|
백준 토마토 코드 및 해설 (파이썬) (0) | 2021.10.04 |
백준 별 찍기 코드 및 해설 (파이썬) (2) | 2021.09.29 |
백준 최종 순위 코드 및 해설 (파이썬) (0) | 2021.09.29 |
백준 인구 이동 코드 및 해설 (파이썬) (0) | 2021.09.22 |