티스토리 뷰

728x90
반응형

지난번 포스팅에서 이어집니다.

teus-kiwiee.tistory.com/60?category=924328

 

매운음식 성애자(Way Cool)

프로그래머스의 힙의 첫번째 문제입니다. programmers.co.kr/learn/courses/30/lessons/42626?language=python3 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들..

teus-kiwiee.tistory.com

 

지난번, 단순 List를 사용해서, Scovile 지수가 원하는 값이 나올때까지 반복되는 매운음식 성애자 문제를 다뤘습니다.

 

하지만, 이때 List를 사용해서 효옹성 테스트를 지나가지를 못했습니다.

 

해당 문제에서는 Heap 구조를 사용해서 빠르게 Minimum 값을 찾는방법을 주요 메커니즘으로 사용합니다.

 

제가 Python으로 작성한 heap과 다르게,

 

Python 내장으로 clean code로 존재하는 heapq 패키지를 사용합니다.

 

해당 패키지를 사용하면, 특정 List에 heap 구조를 갖게 Element를 추가-삭제가 가능합니다.

 

아래는 heapq를 활용한 풀이법 결과입니다 :)

#heap을 사용하는 Python 내장함수
import heapq

def solution(scoville, K):
    #heap이라는 List를 사용해서 heap 구축
    heap = []    
    for i in scoville:
        heapq.heappush(heap, i)
    count = 0    
    while True:        
    	#가장 최소값을 pop한 후, 해당 값이 K보다 작은지 여부 판단
        temp1 = heapq.heappop(heap)
        if temp1>=K:
            break
        #temp1이 K보다 작으면, temp2는 의미가 없으므로 별도의 판별 X
        temp2 = heapq.heappop(heap)
        #heap에 두개를 섞은 새로운 스코빌을 추가합니다.
        heapq.heappush(heap, temp1 + temp2*2)
        count +=1
        if len(heap)==1 and heap[0]<K:
            count = -1
            break       
    
    answer = count
    return answer

 

 

 

728x90
반응형

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

스택 - 주식가격  (0) 2021.06.06
탐욕법 - 조이스틱  (0) 2021.06.02
정수 삼각형  (0) 2021.03.20
Hash - 완주하지 못한 선수  (0) 2021.03.14
완전탐색 - 소수 찾기(Prime Number Search)  (0) 2021.03.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함