백준 설탕 배달 코드 및 해설 (파이썬)

2021. 10. 4. 12:46algorithm

반응형

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

최대한 적은 봉지를 가져가려고 하므로 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)
반응형