행궁동 데이터 엔지니어

반응형

아래는 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3#

 

알고리즘 연습 - 더 맵게 | 프로그래머스

실행 결과가 여기에 표시됩니다.

programmers.co.kr

정확성에서는 통과했으나

효율성에서 실패.

 

 

실패 1 (sort가 많아서 실패)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1번 sort()가 많아서 실패
def solution(scoville, K):
    answer = 0
    
    while len(scoville) >=1 : 
        if min(scoville) >= K :
            return answer
        else :
            if len(scoville) == 1 :
                return -1
            scoville.sort()
            new_value = scoville[0+ scoville[1* 2
            scoville = scoville[2:]
            scoville.insert(0,new_value)
            answer = answer + 1
            
    return answer
 
 

실패 2 (sort 사용안하고 그때 그때 정렬하려고해도 실패)

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
def solution(sco, K):
    answer = 0
    sco.sort()
    
    while len(sco) >=1 : 
        if sco[0>= K :
            return answer
        else :
            if len(sco) == 1 :
                return -1
            v1, v2 = sco[0], sco[1]      
            new_value = v1 + v2 * 2
            sco = sco[2:]
            i_index = 0
            if len(sco) == 0 :
                sco.insert(0,new_value)
            else : 
                if new_value >= max(sco) :
                    sco.insert(len(sco),new_value)
                else : 
                    for i,j in enumerate(sco) :
                        if j >= new_value :
                            i_index = i
                            break                    
                    sco.insert(i_index,new_value)
 
            answer = answer + 1
    return answer

 

구글에서 검색한 heapq로 성공

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import heapq
 
def solution(sco, K):
    answer = 0
    s_heap = []
    
    for i in sco :
        heapq.heappush(s_heap, i)
 
    while s_heap[0<= K :
        if len(s_heap) == 1 :
            return -1
        else :
            heapq.heappush(s_heap, heapq.heappop(s_heap) + heapq.heappop(s_heap) *2)
            answer = answer + 1
 
    return answer

 

heapq에 대해서 참고한 사이트 링크

 

http://www.daleseo.com/python-heapq/

 

[파이썬] heapq 모듈 사용법

데이터를 정렬된 상태로 저장하기 위해서 사용하는 파이썬의 heapq(힙큐) 내장 모듈에 대해서 알아보겠습니다. 힙 자료구조heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공합니다.자바에 익숙하신 분이라면 PriorityQueue 클래스를 생각하시면 이해가 쉬우실 것 같습니다. min heap을 사용하면 원소

www.daleseo.com

 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band