Algorithm/프로그래머스

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

  • -
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

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

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.