자기개발👨💻/코딩 알고리즘
[python] 백준2839 설탕 배달
천숭이
2021. 7. 6. 16:07
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
import sys
n=int(sys.stdin.readline())
b5 = n//5
r = n%5
b3=0
if r==0:
print(b5)
elif r==1 and b5>=1: # 5봉지하나 줄이기
b5-=1
b3+=2
print(b5+b3)
elif r==2 and b5>=2:
b5-=2
b3+=4
print(b5 + b3)
elif r==3:
b3+=1
print(b5 + b3)
elif r==4 and b5>=1:
b5-=1
b3+=3
print(b5 + b3)
else:
print(-1)
규칙이 있는 문제.
경우는 여섯개로 나뉘어진다. b5는 입력받은 크기에에서 5를 나눈 몫이고, r은 그 나머지
b5는 설탕 전체크기
1) 나머지가 0일때,
봉지3 없이도 최적의 결과이므로 b5출력
2) 나머지가 1일때,
봉지5의 값을 1 줄이고 봉지3의 값을 2 늘려준다. 이 때 봉지5가 1보다 크거나 같은지를 체크해줘야한다.
3) 나머지가 2일때,
봉지5의 값을 하나 늘리는 것으로는 봉지3이 모두 담지를 못한다. 따라서 봉지5의 값을 2 줄이고, 봉지3의 값을 4 늘린다. 이 때 봉지5가 2보다 크거나 같은지를 체크해줘야 한다.
4) 나머지가 3일때,
봉지5에서 빼내는 것 없이 봉지3 1개만 추가 하면 된다.
5) 나머지가 4일때,
나머지가 4일때는 봉지5를 1 줄여준다. 그럼 9개를 봉지3에 담아야 하기 때문에, 봉지3을 3 늘려준다. 봉지5가 1보다 크거나 같은지를 체크해줘야 한다.
6) 그 외일때,
봉지3과 봉지5로 담을 수 없는 크기이므로 -1을 출력한다.