반응형
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
반응형
'개발 > Algorithm 문제 풀이' 카테고리의 다른 글
[프로그래머스] lv.1 부족한 금액 계산 (0) | 2022.05.24 |
---|---|
[프로그래머스] lv2 괄호 변환 (0) | 2022.05.10 |
[프로그래머스] lv1 3진법 뒤집기 (0) | 2022.05.10 |
[프로그래머스] lv.1 두 개 뽑아서 더하기 (0) | 2022.05.10 |
[프로그래머스] lv1. 포켓몬 (0) | 2022.05.09 |