import heapq
def solution(scoville, K):
answer = 0
heap = []
for h in scoville:
heapq.heappush(heap, h)
while True:
current = heapq.heappop(heap)
if len(heap) < 1 and current < K:
answer = -1
break
if current >= K:
break
else:
answer += 1
next_node = heapq.heappop(heap)
heapq.heappush(heap, current + next_node*2)
return answer
파이썬에서는 heapq라는 최소 힙을 제공한다. 내가 제일 먼저 풀었을 때는 힙문제라고 알려줬음에도 리스트로 풀었고, 그 다음에서야 heap을 이용해서 풀었다. 문제는 기껏 heapq로 힙을 만들었어도 일반 리스트 다루는 것처럼 사용하다보니 효율성을 통과도 못했다는 것이다.
기능을 제공 해주었음에도 제대로 사용하지 못한 것이 스스로도 황당하지만 스스로가 알고리즘에 얼마나 약한지 똑똑히 알게 되었다. 논리적인 사고력을 기르기 위해 알고리즘 공부를 시작했는데 역시나 시작은 실망스러운 법이다.
'Algorism' 카테고리의 다른 글
알고리즘 초간단 정리 (1) | 2024.10.05 |
---|