아래는 문제링크
https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3#
정확성에서는 통과했으나
효율성에서 실패.
실패 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
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
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
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/
[알고리즘 풀이] 프로그래머스 : 소수 찾기, Level2(완전탐색) (0) | 2019.04.12 |
---|---|
[알고리즘 풀이] 프로그래머스 : 체육복, Level2(탐욕법) (0) | 2019.04.12 |
[알고리즘 풀이] 프로그래머스 : K번째수, Level1(정렬) (0) | 2019.04.12 |
[알고리즘 풀이] 프로그래머스 : 전화번호 목록, Level2(해시) (0) | 2019.04.11 |
[알고리즘 풀이] 프로그래머스 : 탑, Level2(스택/큐) (0) | 2019.04.09 |