코테
[python] 프로그래머스스쿨 더 맵게
상똥
2023. 12. 14. 17:22
코딩테스트 연습 - 더 맵게 | 프로그래머스 스쿨 (programmers.co.kr)
풀이 |
1. 리스트 scoville을 heapify를 사용해 힙으로 만들어준다 2. while 문을 사용해서 scoville[0]의 값이 K보다 작은 동안에만 가장 작은 값과 두 번째로 작은 값*2를 더한다 - heappush를 사용해서 더한다 - 가장 작은 값 반환 동시에 삭제하기 위해 heappop을 사용한다 3. 만약 scoville의 값이 하나밖에 없다면, return -1 |
회고 |
- list인 scoville을 그대로 활용하고 싶어서 heapify를 사용했다 그냥 하면 안 됨 ㅜ ㅜ - 고친 코드의 효율성이 조금! 더 좋아서 풀이를 고친 코드로 했고 코드는 그냥 같이 첨부한다 |
코드 (접은 글) |
더보기
고치기 전 코드
import heapq
def solution(scoville, K):
heap = []
answer = 0
for i in scoville:
heapq.heappush(heap, i)
while heap[0]<K:
if len(heap)==1:
return -1
heapq.heappush(heap, heapq.heappop(heap)+heapq.heappop(heap)*2)
answer+=1
return answer
고친 후의 코드
import heapq
def solution(scoville, K):
heapq.heapify(scoville)
answer = 0
while scoville[0]<K:
if len(scoville)==1:
return -1
heapq.heappush(scoville, heapq.heappop(scoville)+heapq.heappop(scoville)*2)
answer+=1
return answer
고치기 전 코드 | 고친 후의 코드 |