본문 바로가기
Coding Test/Python 풀이

[Python] (프로그래머스 Level 2) 더 맵게

by Chaedie 2023. 2. 12.
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 하는 센스도 좋은것 같다.
  • 따라 하진 않을것 같지만 좋은 풀이를 본것 같다.

댓글