https://www.acmicpc.net/problem/2839
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을 출력한다.
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[python] 백준11866 요세푸스문제 0 (0) | 2021.07.12 |
---|---|
[python] 백준2164 카드2 (0) | 2021.07.08 |
[python] 백준10866 덱 (0) | 2021.07.07 |
[python] 백준 4344 평균은 넘겠지 (0) | 2021.07.06 |
소수 구하기 (0) | 2021.07.01 |
[Python] 백준4153 직각삼각형 (0) | 2021.06.28 |