스파르타 코딩클럽/4주차

농심 라면공장

코딩쪼앙 2022. 3. 31. 18:17

문제

해결방법

남아있는 재고가 정상적으로 돌아오는 날 까지 재고가 1이라도 남아있어야 하고, 또한 재료를 사오는 날까지도 남은 재고가 있어야 하므로 그 조건 문을 걸어준 후 많은 재고를 찾기 위해 값들을 힙에 넣어준다.

-> 음수로 값을 넣어주면 max힙으로 구현할 수 있다

그 후 인덱스를 1 증가시켜주고, 재료를 사온 횟수도 하나 더한 후, 힙에서 가장 큰 재고를 꺼내 남아있는 재고에 더해준 후 재료를 사온 횟수를 리턴해주면 값을 구할 수 있다.

import heapq

ramen_stock = 4
supply_dates = [4, 10, 15]
supply_supplies = [20, 5, 10]
supply_recover_k = 30


def get_minimum_count_of_overseas_supply(stock, dates, supplies, k):
    max_heap = []
    answer = 0
    last_added_index = 0
    while stock <= k:
        while last_added_index < len(dates) and dates[last_added_index] <= stock:
            heapq.heappush(max_heap, -supplies[last_added_index])
            last_added_index += 1
        answer += 1
        heappop = heapq.heappop(max_heap)
        stock += - heappop
    return answer


print(get_minimum_count_of_overseas_supply(ramen_stock, supply_dates, supply_supplies, supply_recover_k))
print("정답 = 2 / 현재 풀이 값 = ", get_minimum_count_of_overseas_supply(4, [4, 10, 15], [20, 5, 10], 30))
print("정답 = 4 / 현재 풀이 값 = ", get_minimum_count_of_overseas_supply(4, [4, 10, 15, 20], [20, 5, 10, 5], 40))
print("정답 = 1 / 현재 풀이 값 = ", get_minimum_count_of_overseas_supply(2, [1, 10], [10, 100], 11))

'스파르타 코딩클럽 > 4주차' 카테고리의 다른 글

로봇청소기  (0) 2022.04.12
BFS 구현하기  (0) 2022.03.29
DFS 구현하기  (0) 2022.03.29
힙 구현하기  (0) 2022.03.28