본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 2839번: 설탕 배달 (Python)

문제

백준 2839번: 설탕 배달

풀이

n = int(input())
min = 5000
for i in range(0, int(n/5)+1):
    for j in range(0,int(n/3)+1):
        if (5*i)+(3*j) == n:
            if min > i+j:
                min = i+j
if min == 5000:
    print(-1)
else:
    print(min)

 

풀고나서 알아보니 더 쉽게 푸는 방법이 있었다.

 

n = int(input())
result = 0
while(1):
    if(n%5 == 0):
        result += int(n/5)
        print(result)
        break;
    else:
        n -= 3
        result = result + 1
    if(n<0):
        print(-1)
        break;

정리

두 번째 풀이를 보면, 맨 처음 5의 배수로 나누어 떨어지지 않을 경우

 

설탕 무게에서 3씩 줄여가면서 설탕봉지 개수를 하나씩 늘려가는 방식(3키로짜리 봉지를 1개 늘린다고 생각하면 된다)으로 풀면 된다.

 

설탕 무게를 3씩 줄여도 설탕무게가 5로 나누어 떨어지지 않으면, 정확하게 N키로그램을 만들수 없는것으로 -1 출력

 

 

 

출처

acmicpc.net/problem/2839