띵유로그

[프로그래머스][힙]더맵게 본문

알고리즘

[프로그래머스][힙]더맵게

띵유 2020. 8. 23. 18:58
반응형

내 풀이

def solution(scoville, K):
    answer = 0
    import heapq
    heapq.heapify(scoville)
    while True:
        if scoville[0] >= K:
            break
        elif len(scoville) == 1:
            answer = -1
            break
        f = heapq.heappop(scoville)
        s = heapq.heappop(scoville)
        mix = f + (s * 2)
        answer = answer + 1
        heapq.heappush(scoville, mix)

    return answer

 

으악...완전 이상한 짓을 하고 있었다.
다 풀어놓고 헤멘 이유 두가지.

1. heap을 heqp로 오타

2. 음식을 섞을 떄 두번쨰로 덜 매운것에 가중*2가 된다는걸 잊었다.
그래서 초기조건으로 모든 음식 맵기의 합이 K보다 작으면 -1을 return 해버렸다.



배운점
1. 우선순위 큐를 heap으로 구현
   -> 파이썬 heapq

   -> heapq.heapify(list) : list 를 heapq로 바꿈
   -> heapq.heappush(list, 원소)
   -> heapq.heappop(list)
2. max heap을 구현할때는 모든 원도에 -1을 붙이고 절댓값으로 계산

 


 

반응형
Comments