Koala - 15기/기초 알고리즘 스터디

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

deveronica 2024. 7. 8. 01:18

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

문제 풀이

  1. 정확하게 나누어 떨어질 때, 3킬로그램의 갯수가 적을수록 더 적은 개수의 봉지를 가져갈 수 있다.
  2. 최대의 3킬로그램으로 가져갈 때를 가정하여, max_pcs를 설정한다. (0개 일때도 고려하므로, +1)
  3. 0부터 max_pcs까지, 3킬로그램 봉지의 갯수를 pcs로 설정하여 탐색한다.
    • N킬로그램에서 pcs만큼의 3킬로그램 봉지를 가져간 나머지에 대해, 5킬로그램으로 나누어 떨어지면, 그 갯수와 pcs를 합한 값을 출력한다.
  4. has_answer의 플래그를 통해, 정확하게 N킬로그램을 만들 수 없는 상황에 대비한다.

문제 코드

N = int(input())
has_answer = False

max_pcs = (N // 3) + 1
for pcs in range(max_pcs):
    remainder = N - (3 * pcs)
    if remainder % 5 == 0:
        print(pcs + (remainder // 5))
        has_answer = True
        break
if has_answer is not True:
    print(-1)