백준(Baekjoon Online Judge) - 2839번(설탕 배달) 문제 풀이

Series: 알고리즘 문제풀이

알고리즘 문제풀이contains 12

1. 문제

1.png

2. 입출력 예시

입력 예시출력 예시
184
4-1
62
93
113

3. 문제 풀이

알고리즘을 푸는 데에 있어서 몇 가지 가정사항을 적용하였다.

  1. 입력 값(N)이 5로 나누어 떨어질 경우는 5로 나눈 몫을 더한 후 모든 봉지 수량의 합을 출력
  2. 그 외에는 입력 값(N)에 3을 빼고, 봉지 수는 1 증가시켜줄 것
  3. 만약, 2번 과정에서 입력 값(N)이 0보다 작을 경우 -1을 출력할 것

위 내용을 바탕으로 코드로 작성하면 다음과 같다.

def solution(n):
    kg5 = 0
    kg3 = 0

    while True:
        if not n % 5:
            kg5 += n // 5
            print(kg5 + kg3)
            break

        n -= 3
        kg3 += 1
        if n < 0:
            print(-1)
            break


N = int(input())
solution(N)

제출한 코드의 성능은 메모리 28,776 KB, 시간 64ms이다. 5킬로그램 봉지와 3킬로그램 봉지의 수량을 굳이 나눌 필요없이 하나의 변수로 통일해도 되지만, 각각의 수량을 확인하고자 나누었다.

참고자료