본문 바로가기

알고리즘 문제풀이

백준 2839. 설탕 배달 Python 실버 4 그리디

반복문을 이용한 풀이

arr = [5, 3]
n = int(input())
min_cnt = 10000
cnt = 0
flag = 1
while n>0:
    if n%5:
        n -= 3
        cnt += 1
    else:
        n -= 5
        cnt += 1
if n < 0:
    flag = 0
# find(n, 0)
if flag:
    print(cnt)
else:
    print(-1)

재귀로 풀어서 시간초과 뜸

import sys
def find(sugar,cnt):
    global min_cnt, flag
    if sugar < 0:
        # flag = 0
        return
    if min_cnt < cnt:
        return
    if sugar == 0:
        flag = 1
        if min_cnt > cnt:
            min_cnt = cnt
        return
    for x in range(2):
        find(sugar - arr[x],cnt +1)
    if min_cnt == 10000000000:
        flag = 0
        return
t = int(input())
for tc in range(t):
    arr = [5,3]
    n = int(sys.stdin.readline())
    min_cnt =10000000000
    flag = 1

    find(n,0)
    if flag:
        print(min_cnt)
    else:
        print(-1)