[백준] 2839번 설탕 배달

거북이·2023년 1월 10일
0

백준[실버4]

목록 보기
1/91
post-thumbnail

💡문제접근

일반적인 최소 거스름돈 알고리즘과는 다른 문제이다. 여러모로 생각할 부분이 참 많았다.

①. N의 값이 0kg이 된다면 설탕 봉지의 개수를 출력한다.
②. N의 값이 1kg, 2kg, 4kg라면 3과 5로 나누어 떨어질 수 없으므로 -1을 출력한다.
③. N의 값이 3kg라면 3kg만큼 빼주고 3kg 설탕 봉지 하나를 추가해준다.
④. N의 값이 5kg이상인 경우를 생각하고 하부 조건으로 N이 5의 배수라면 당연히 5로 나눈 몫만큼 5kg 설탕 봉지를 추가해주면 된다. 하지만 N이 5의 배수가 아니라면 3Kg만큼 빼주고 3kg 설탕 봉지 하나를 추가해준다.

💡코드(메모리 : 30616KB, 시간 : 36ms)

N = int(input())
cnt = 0
while True:
    if N == 0:
        print(cnt)
        break
    if N == 4 or N == 2 or N == 1:
        print(-1)
        break
    if N == 3:
        cnt += 1
        N -= 3
    if N >= 5:
        if N % 5 == 0:
            cnt += (N // 5)
            N -= (N // 5) * 5
        else:
            N -= 3
            cnt += 1

💡소요시간 : 31m

0개의 댓글