1차 시도
def solution(scoville, K):
answer = 0
while True:
scoville.sort()
if scoville[0]==0 and scoville[1]==0:
return -1
min1=scoville.pop(0)
min2=scoville.pop(1)
mixed=min1+min2*2
scoville.insert(0,mixed)
answer+=1
if min(scoville)>=K:
break
return answer
Heap에 관한 설명
https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html
https://gmlwjd9405.github.io/2018/05/10/algorithm-heap-sort.html
Python에서 Heap은 MinHeap
힙에 원소 추가 heappush()
힙에서 원소 삭제 heappop()
기존 리스트를 힙으로 변환 heapify()
https://www.daleseo.com/python-heapq/
2차시도
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while True:
if scoville[0]==0 and scoville[1]==0:
answer=-1
break
min1=heapq.heappop(scoville)
min2=heapq.heappop(scoville)
heapq.heappush(scoville,min1+min2*2)
answer+=1
if scoville[0]>=K:
break
return answer
3차시도
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0] if len(scoville)<2:
return -1
min1=heapq.heappop(scoville)
min2=heapq.heappop(scoville)
heapq.heappush(scoville,min1+min2*2)
answer+=1
return answer
while문을 빠져나오는 조건이 가장 작은원소와 두번째로 작은 원소만 체크해서 더했을때 계속 0이 나오는 경우 인줄 알았는데 잘못된 조건이었다. 두개 0으로 더해도 그다음원소가 0이 아닌이상 값이 계속 더해진다.
원소가 하나 남았을때 K를 못넘기면 빠져나오게 했다.
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL2 큰 수 만들기,python3, 탐욕법(greedy) (0) | 2019.11.11 |
---|---|
[프로그래머스] LEVEL2 가장큰수, python3, 정렬 (0) | 2019.11.06 |
[프로그래머스] LEVEL2 조이스틱,python3, 탐욕법(greedy) (0) | 2019.11.04 |
[프로그래머스] LEVEL2 소수 찾기, python3,완전탐색 (0) | 2019.11.04 |
[프로그래머스] LEVEL2 탑, python3, 스택/큐 (0) | 2019.10.29 |