[TIL]99클럽 코테 스터디 9일차 TIL(더 맵게)

장광진·2024년 7월 30일

코딩테스트

목록 보기
4/4

문제

풀이

import heapq

def solution(scoville, K):
    heapq.heapify(scoville)
    mix = 0
    
    while scoville[0] < K:  # 가장 작은 값이 K 이상이 될 때까지 반복
        # 예외처리
        if len(scoville) < 2:
            return -1  # 더 이상 섞을 수 없으면 -1 반환
        
        mix +=1
        one = heapq.heappop(scoville)
        two = heapq.heappop(scoville)
        plus = one + (2*two)
        
        heapq.heappush(scoville, plus)
                
    return mix
        

heapq를 사용하여 풀면 간단하게 풀 수 있었다. scoville 배열을 heapq로 만들어주고 scoville배열의 맨 첫 번쨰 즉, 가장 작은 수가 K보다 작으면 계속 배열을 돌고 크거나 같다면 탈출하는 방식이다.

이때 one에서 첫번째 [0]을 pop한 후 새로 heapq가 재배열된다. 그 후 가장 작은 수인 two도 삭제하고 plus에 one + 2*two값을 넣어준다. 그 후 scoville에 push해준다.
만약 반복문을 탈출했다면 mix를 반환한다.

회고

heapq만 알고 있다면 파이썬에서는 정말 쉬운 문제라 생각한다. 역시 적폐 파이썬..

profile
점진적 과부하

0개의 댓글