파이썬으로 부시자! Python with Coreenee

프로그래머스 - Heap - 라면공장

문제

스크린샷 2020-04-17 오후 2 54 04

입력

스크린샷 2020-04-17 오후 2 54 15


나의 처음 코드

이번 문제는 heap문제이지만, 대체적인 흐름만 heap의 느낌이지 사실 알고보면 머리쓰는 문제이다. (물론 모든 문제가 머리를 쓰겠지만 !) 제일 처음에는 코드가 50줄이 넘었었는데 시간초과로 통과하지 못했다. 그래서 다른 블로그를 참고해서 문제를 풀었다.(이제는 모르는거 있으면, 오랜 시간 매달리기보다는 참고하기로 하였음 ㅎㅎ) 코드는 다음과 같다.

def solution(stock, dates, supplies, k):
    answer = 0
    dates.reverse()
    supplies.reverse()
    tmp = []
    while stock < k:
        while True:
            if len(dates) == 0 or stock < dates[-1]:
                break
            if stock >= dates[-1]:
                dates.pop()
                tmp.append(supplies.pop())
        max_sup = max(tmp)
        del tmp[tmp.index(max_sup)]
        stock += max_sup
        answer += 1
    return answer

코드를 보면 매우 짧다. 지금 현재 가지고있는 재고와 다음 재고가 들어오는 날짜를 비교해서 최대값만 가져서 한번에 멀리가게 하는게 방법이다. (최소한 몇 번 이므로) 그림을 그려서 생각하면 더 직관적으로 다가올 것이다!