[알고리즘] 프로그래머스 - 더 맵게

    728x90
     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    내가 짠 코드 (안돌아간 코드)

    import heapq
    
    def solution(scoville, K):
        cnt = 0
        heapq.heapify(scoville)
        if heapq.nsmallest(1, scoville)[0] >= K:
            return cnt
        while len(scoville) >= 2:
            first = heapq.heappop(scoville)
            second = heapq.heappop(scoville)
    
            new = first + (second * 2)
            heapq.heappush(scoville, new)
            cnt += 1
    
            smallest = heapq.nsmallest(1, scoville)[0]
            if smallest >= K:
                return cnt
    
        # 스코빌 지수를 못 만드는 경우 - 리스트가 2보다 작을때
        return -1

    내가 짠 코드는 TC는 모두 돌아갔으나, 효율이 모두 통과하지 못했다. . 확실히 코드가 깔끔하지 않았다.

     

    돌아간 코드

    import heapq
    
    def solution(scoville, K):
        cnt = 0
        heapq.heapify(scoville)
    
        while scoville[0] < K:
            if len(scoville) >= 2:
                cnt += 1
                ans = heapq.heappop(scoville)
                ans += heapq.heappop(scoville)*2
    
                heapq.heappush(scoville, ans)
            else:
                return -1
        return cnt

    수정 후 정상적으로 작동했다.

    댓글