본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

백준 2839 - 설탕 배달 (Python)

by su-no 2022. 5. 8.

문제

n kg설탕을 3kg/5kg 봉지에 각각 나눠 담는다.

이때 봉지의 개수가 최소가 되는 경우를 구해야 한다.

설탕이 정확히 나누어떨어지지 않는다면 -1을 출력한다.

 

코드

n = int(input())

# a: 3kg 봉지 개수
# b: 5kg 봉지 개수

b = n//5
a = n-b*5
while (True):
    if b == 0 or a % 3 == 0:
        break
    b -= 1
    a = n-b*5
a = a//3

if a*3+b*5 == n:
    print(a+b)
else:
    print(-1)

 

풀이

3kg 봉지보다 5kg봉지에 많이 담아야 당연히 봉지의 수가 더 적을 것이다.
그래서 설탕 총 무게를 5kg로 나누었을 때 몫을 구하고,

그 나머지가 3kg로 나누어떨어지는 경우를 구한다.

나누어떨어지지 않는다면 5kg 봉지 수를 -1씩 줄인다.

만약 5kg 봉지 수(b)가 0이 되거나, 나머지 설탕의 무게가 3kg로 나누어떨어지면 반복문을 탈출한다.

 

a*3kg + b*5kg = nkg 이 맞으면, 봉지 수를 출력하고 틀리면 -1를 출력한다.