공부 기록장

[백준 - Python] 2839. 설탕배달 (그리디) 본문

코딩 테스트/백준 문제 풀이

[백준 - Python] 2839. 설탕배달 (그리디)

빛나무 2024. 1. 3. 16:34

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

 

2839번: 설탕 배달

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

www.acmicpc.net

 

코드

n = int(input())
cnt = 0
while True:
    if n < 0:       # N을 만들 수 없는 경우
        cnt = -1
        break
    if n % 5 == 0:
        cnt5 = n // 5
        cnt += cnt5
        break
    n -= 3
    cnt += 1
    if n == 0:
        break

print(cnt)

 

5kg 봉지로 가져가면 가져가는 봉지의 개수를 줄일 수 있으므로,

최대한 5kg 봉지를 많이 써서 가져갈 수 있게 해야 한다는 아이디어를 떠올리는게

문제 해결의 포인트이다.

 

무한 반복문을 돌면서 5로 나누어보고

나누어지지 않으면 3을 1번씩 빼보면서 다시 확인해보는 식으로 아이디어를 구현할 수 있다.

 

문제에서 정확하게 만들어 지지 않은 경우에는 -1을 출력한다고 나와있다.

따라서, 3, 5kg 봉지만으로는 나눠지지 않는 불가능한 경우에 대한 처리를 해주어야 한다.

그 경우에 대한 처리가 가장 위의 if문이다.

 

마지막의 if문은 3kg으로만 가져가게 되는 경우에 대한 처리이다.