ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 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)


Designed by Tistory.