728x90
[Python] (프로그래머스 Level 2) 더 맵게
내 풀이
import heapq
def solution(scoville, K):
heap = scoville
heapq.heapify(scoville)
count = 0
while True:
min_val = heapq.heappop(heap)
if min_val >= K:
return count
if len(heap) < 1:
return -1
min_val2 = heapq.heappop(heap)
heapq.heappush(heap, min_val + min_val2 *2)
count += 1
return count
- JS로 공부할 때 Heap 구현은 해보았지만… 사용해서 문제를 풀어볼 엄두는 안나던데, python으로 하니 간단하게 import 해서 이용가능하네요
- 테스트 케이스 16번에서 자꾸 실패 나서 구글링해보니 원소가 1개이면서 K를 만족하는 케이스가 있어서
len(heap) < 1
으로 조건식을 변경하니 PASS..!
다른 사람 풀이
from heapq import heapify, heappush, heappop
def solution(scoville, K):
heapify(scoville)
for i in range(1000000):
try:
heappush(scoville, heappop(scoville)+(heappop(scoville)*2))
if scoville[0] >= K: return i+1
except:
return -1
배운 점, 느낀 점
- heapq 적는 시간을 아끼기 위해 메서드들을 import하는것도 괜찮은 방법.
- 다른 사람은 heapq as hq 로 하기도 했더라.
- heappush에 pop까지 넣었는데, 직관성은 떨어지지만 오히려 간단한 풀이 일지도… 근데 앞으로도 이렇게 풀진 않을것 같다. 살짝 헷갈리니까..?
- try: except: 로 예외때 return -1 하는 센스도 좋은것 같다.
- 따라 하진 않을것 같지만 좋은 풀이를 본것 같다.
'Coding Test > Python 풀이' 카테고리의 다른 글
[Python] (프로그래머스 Level 3) 이중우선순위큐 (0) | 2023.02.12 |
---|
댓글