https://school.programmers.co.kr/learn/courses/30/lessons/42626
추후 보완 예정
import heapq
def solution(scoville, K):
heap = []
for i in scoville:
heapq.heappush(heap, i) # heap 배열을 생성해서 heapq를 사용해 배열 속에 스코빌배열 안의 요소들을 모두 집어넣는다. (자동으로 오름차순으로 저장된다)
count = 0
while(1): # heap[0]값 (=최솟값)이 K보다 작은 동안, heap 배열의 요소 개수가 1개 이상인 경우만 실행
min1 = heapq.heappop(heap)
min2 = heapq.heappop(heap)
val = min1+min2*2
heapq.heappush(heap, val)
count += 1
if len(heap) == 1 or heap[0] > K: # => 여기서 시간 초과 발생
break
if heap[0] > K:
return count
else:
return -1
import heapq
def solution(scoville, K):
heap = []
for i in scoville:
heapq.heappush(heap, i) # heap 배열을 생성해서 heapq를 사용해 배열 속에 스코빌배열 안의 요소들을 모두 집어넣는다. (자동으로 오름차순으로 저장된다)
count = 0
while heap[0] < K and len(heap) > 1: # heap[0]값 (=최솟값)이 K보다 작은 동안, heap 배열의 요소 개수가 1개 이상인 경우만 실행
min1 = heapq.heappop(heap)
min2 = heapq.heappop(heap)
val = min1+min2*2
heapq.heappush(heap, val)
count += 1
if heap[0] > K:
return count
else:
return -1
이 문제는 채점 시 효율성 테스트도 진행된다. 현재 위 정답 코드의 효율성 테스트 결과는 다음과 같다.
추후 다른 방법으로도 더 코드를 작성해보면서 더 효율적인 코드로 구현해봐야겠다.