heapq 를 이용한다 => 가장 첫 번째 원소는 무조건 최소임을 보장
처음에 길이가 2 이상임을 빼먹고 돌려서 1번 3번 테스트 케이스가 런타임 에러
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
# print(scoville)
while len(scoville) >= 2 and scoville[0] < K and scoville[1] < K:
# input()
a = heapq.heappop(scoville)
b = heapq.heappop(scoville)
c = a + (2*b)
heapq.heappush(scoville, c)
# print(c)
answer += 1
# print(answer)
return answer
< 정확성 >
< 효율성 >
못만드는 경우 -> 예외처리 -> 1, 3, 8, 14 해결
질문하기 => "h가 비어있지 않은 경우를 예외로 안 넣으면 최소값 빠지자마자 남은 값이 K를 넘어서 return 해버리네요"
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
# print(scoville)
if min(scoville) >= K:
return 0
while True:
# input()
if len(scoville) < 2:
break
if scoville[0] >= K and scoville[1] >= K:
break
# print("before = ", scoville)
a = heapq.heappop(scoville)
# print("a = ", a)
b = heapq.heappop(scoville)
# print("b = ", b)
c = a + (2*b)
# print("c = ", c)
heapq.heappush(scoville, c)
# print("after = ",scoville)
answer += 1
# print("answer = ", answer)
if answer > 0 and scoville[0] < K:
answer = -1
return answer