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을 출력하도록 했다.