Python

[Python] 백준 2839(설탕 배달)

땅콩새싹 2021. 8. 2. 23:20
반응형

백준 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