백준 2839(설탕 배달)

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


코드설명
1
2
3
4
5
6
7
8
9
10
11
12
13
|
sugar = int(input())
bag = 0
while True:
if sugar % 5 == 0:
bag += sugar // 5
print(bag)
break
sugar -= 3
bag += 1
if sugar < 0:
print('-1')
break
|
cs |
첫 줄에 설탕의 무게를 입력받습니다. bag은 5킬로그램과 3킬로그램 봉지가 총 몇 개 필요한지 나타내 줄 변수입니다. 이 문제를 처음에는 설탕의 무게에서 5킬로그램 봉지를 최대한 많이 사용해 구하고 나머지 무게를 3킬로그램으로 나누어 두개의 봉지의 개수를 더하고 나누어 떨어지지 않으면 -1을 출력하려고 간단히 생각했는데 이 알고리즘으로 코드를 구현해보니 설탕의 무게가 6이나 9처럼 3으로 나누어 떨어지는 무게에도 -1을 출력하는 오류가 생겼습니다. 생각을 다시해서 while로 무한 반복을 해놓고 설탕의 무게가 5로 나누어 떨어질 때 까지 무게를 3씩 빼주고 3을 뺄 때마다 봉지의 개수를 1씩 더하는 방법으로 생각을 했습니다. 예를 들어 설탕의 무게가 11이면 11-3=8 봉지 개수 1, 8-3=5 봉지 개수 2, 이제 5로 나누어 떨어지니까 (지금까지 봉지의 개수2 + 남은 설탕의 무게 5//5=1)=3, 총 필요한 봉지의 개수는 3이 되는 방법입니다. 그리고 설탕의 무게가 계속 3씩 빼주고 0 아래로 내려갔을 때 나누어 떨어지는 수가 없다는 뜻이므로 -1을 출력해주었습니다.
실행결과

'Python' 카테고리의 다른 글
[Python] 백준 1546(평균) (0) | 2021.08.31 |
---|---|
[Python] 백준 1157(단어 공부) (0) | 2021.08.02 |
[Python] 백준 8958(OX퀴즈) (0) | 2021.07.29 |
[Python] 백준 4344(평균은 넘겠지) (0) | 2021.07.29 |
[Python] 백준 1110(더하기 사이클) (0) | 2021.07.25 |