본문 바로가기
개발/Algorithm 문제 풀이

[프로그래머스] lv.2 더 맵게

by DenverAlmighty 2022. 5. 10.
반응형

https://programmers.co.kr/learn/courses/30/lessons/42626#

 

풀이1

정확성 테스트는 모두 통과인데

효율성 테스트에서 모두 시간 초과 난다

def solution(scoville, K):
    answer = 0
    scoville.sort()
    while len(scoville)>2:
        answer += 1
        idx=scoville[0] + scoville[1]*2
        del scoville[0]
        del scoville[0]
        if scoville[0] >= K:
            return answer
        else: 
            scoville.append(idx)
            scoville.sort()
    if len(scoville) == 2:
        idx=scoville[0] + scoville[1]*2
        if idx >= K:
            return answer+1
        else: 
            return -1
    else:
        return -1

 

풀이 2

heapq 사용

pop, push 되면 다시 정렬된다.

import heapq

def solution(scoville, K):
    ans = 0
    h = []
    for s in scoville:
        heapq.heappush(h, s)
    while h[0] < K:
        ans += 1
        try:
            heapq.heappush(h, heapq.heappop(h) + heapq.heappop(h)*2)
        except IndexError:
            return -1
    return ans
728x90
반응형