카테고리 없음

백준 2839번 : 설탕배달 (Python,파이썬)

에르미타쥬 2018. 12. 9. 00:07

처음엔 if문으로 가능한 경우의 수를 모두 나누어 풀려고 했으나 잘 되지 않았다. 그래서 결국 다른 사람들의 코드를 참고하여 문제를 풀었다.

일단 설탕봉지의 갯수를 최소로 할 수 있는 방법은 가능한대로 5kg 봉지에 설탕을 담는 것이다.
설탕봉지의 갯수가 최대가 되는 상황은 3kg봉지로만 설탕을 담는 상황이다.

N킬로그램의 설탕을 5kg봉지에 가능한 담고나면 세 가지 상황이 생긴다.
1)설탕을 5kg에 남김없이 담았다. 이 경우 만들어진 5kg봉지 갯수 그대로를 출력하게 하면 된다.
2)설탕을 5kg에 가능한 담았으나, 5kg 봉지를 채우기 부족한 나머지 설탕들이 남았다. 이 경우 5kg 봉지의 설탕을 풀어 나머지 설탕에 더하고 그 설탕들을 3kg 봉지에 담는다. 설탕들이 3kg 봉지에 남김없이 들어갈 때 까지 5kg봉지를 푸는 것을 반복한다.
3)위의 시도로 불가능하면 -1을 리턴하면 된다.



1
2
3
4
5
6
7
8
9
10
11
12
sweet = int(input())
five_bag = sweet//5
sweet%=5
three_bag=0
while five_bag >= 0:
    if sweet%3 ==0:
        three_bag = sweet//3
        sweet = sweet%3
        break
    five_bag-=1
    sweet +=5
print((sweet==0and (five_bag + three_bag) or -1)