Koala - 10기/기초 알고리즘 스터디

[백준/Python] 2839번 : 설탕 배달

알 수 없는 사용자 2023. 3. 9. 20:29

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

 

2839번: 설탕 배달

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

www.acmicpc.net

문제분석

ㅗㅓㅓ

소스코드

input = __import__('sys').stdin.readline

N = int(input())

bigBag = N // 5

while bigBag >= 0:
    if (N - bigBag * 5) % 3 == 0:
        print(bigBag + ((N - bigBag * 5) // 3))
        break
    if bigBag == 0 and N % 3 != 0:
        print(-1)
        break
    bigBag -= 1

문제풀이

5킬로그램짜리 봉지와 3킬로그램짜리 봉지로 입력받은 숫자(N)만큼의 무게를 배분해서 최소의 봉지로 가져가는 경우를 구하거나, 불가능한 경우 -1을 출력하는 문제였다. 5킬로그램짜리 봉지를 최대한 많이 사용하고 남은만큼 3킬로그램짜리 봉지를 사용하는 경우에 봉지의 수가 최소가 될 것 같아서 이 생각을 갖고 코드를 작성하였다.

N킬로그램에 남는 설탕과는 상관없이 사용할 수 있는 최대의 5킬로그램짜리 봉지 수는 N나누기 5의 몫이다. 그리고 그 숫자를 bigBag이라고 하고 bigBag을 0이 될때까지 하나씩 줄이면서 5킬로그램짜리 봉투에 담고 남는 설탕의 무게가 3으로 나머지 없이 나누어 떨어지면 N킬로그램을 최소의 봉지를 사용하여 나눌 수 있는 경우가 나왔다고 판단하고 각각 몇 봉지인지 출력하고 break로 반복문을 끝냈다.

만약 bigBag이 0이고 남은 설탕의 무게가 3으로 나누어 떨어지지 않으면 아예 5킬로그램짜리와 3킬로그램짜리로 나눌 수 없다는 경우이므로 조건문을 걸어 -1을 출력하도록 했다.