본문 바로가기
개발/코딩테스트

백준 2839번: 설탕 배달 [파이썬]

by 로또 2022. 5. 19.

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

 

2839번: 설탕 배달

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

www.acmicpc.net

 

제출한 답

n = int(input())

total = 0

while n!=0:
  if n%5==0:
   total+=n//5
   break
  elif n>=3 :
    n-=3
    total+=1
  else :
    total = -1
    break
  
print(total)
맞았습니다!

 

코드 풀이

n = int(input())

total = 0

설탕의 무게 n 입력 받고 최종 출력할 봉지의 개수 total 선언

 

while n!=0:
  if n%5==0:
   total+=n//5
   break
  elif n>=3 :
    n-=3
    total+=1

설탕의 무게 n이 0이 될 때까지 반복하는 반복문 while문을 돌며 봉지의 개수를 센다.

최대한 5킬로그램 봉지를 많이 사용해야 적은 봉지 개수를 만들 수 있다.

따라서 n이 5로 딱 나뉘어 떨어진다면 전부 5킬로그램의 봉지를 사용한다. 5로 나눈 몫을 total값에 더해준다.

그렇지 않다면 3킬로그램의 봉지를 사용한다. n에서 3을 빼고 total에 1을 더해준다.

3을 계속 빼다가 5로 나뉘어지는 n이 된다면 나머지는 5킬로그램 봉지에 담게 될 것이고, 0이 된다면 while문을 벗어날 것이다.

만약 n이 5로 나뉘지도 않고, 3보다 작다면 어떤 봉지에도 담을 수 없으므로 아래 else문으로 넘어간다.

 

  else :
    total = -1
    break
  
print(total)

3킬로그램 봉지도 5킬로그램 봉지도 사용할 수 없는데 설탕이 남았다면 total 값을 -1로 한다.

마지막으로 total 값을 출력한다.

댓글