ღ yuni_world ღ

[Python] [백준 / BOJ] 2839번 : 설탕 배달 본문

알고리즘(Python)/백준

[Python] [백준 / BOJ] 2839번 : 설탕 배달

ღ유닝이ღ 2025. 12. 2. 17:46

📌 문제링크

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


📌 문제풀이

n = int(input())
cnt = 0

while n >= 0:
    if n % 5 == 0:              # 현재 값이 5로 나누어 떨어지면
        cnt += n // 5           # 필요한 5kg 봉지 개수를 더하고
        print(cnt)              # 결과 출력 후 종료
        break
    n -= 3                      # 5로 나누어지지 않으면 3kg 봉지를 하나 사용하고
    cnt += 1                    # 사용 횟수 증가
else:
    print(-1)                   # 반복을 끝까지 돌았는데도 딱 맞게 나누어지지 않으면 -1 출력
  • 5kg은 3kg보다 크기 때문에 가능한 한 많이 사용해야 전체 봉지 수가 줄어든다.
    • 따라서 5kg을 최대한 먼저 사용할 수 있게끔 코드를 작성
  • 5kg으로 딱 떨어지지 않으면 n -= 3으로 3kg 봉지를 하나 사용한 것으로 처리하고 남은 무게를 다시 5로 나누어떨어지는지 확인
  • 이 과정에서 n이 음수가 되면 어떤 조합으로도 만들 수 없음을 뜻하므로 -1을 출력

📖 NOTE

문제풀이 후기

코드를 작성할 때 전체적으로 코드를 더 간결하게 작성할 필요가 있어 보임.

처음 작성했던 코드는 print 문이 while문 밖에 있어 흐름이 길어졌는데, 위처럼 조건 안에서 바로 처리하면 훨씬 짧고 명확해보임

앞으로는 이런 식으로 불필요한 부분을 줄여 코드를 정리하는 연습이 더 필요할 듯