| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- hash
- dl
- Python
- backward
- 프로그래머스
- DeepLearning
- Word2vec
- skip-gram
- Sigmoid
- Stack
- 파이썬
- affine
- FullyConnectedLayer
- kakao
- Programmers
- boj
- PPMI
- 신경망
- sort
- MySQL
- algorithm
- que
- select
- Heap
- stak
- 자연어처리
- SQL
- Numpy
- CBOW
- 딥러닝
Archives
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 Kit] 힙(Heap) 더 맵게 - Python 본문
[문제 이해 및 풀이]
heap을 사용하는 문제여서 heapq를 사용해야겠다고 생각했다.
heapq.heappop()을 사용해서 최소값과 두번째로 작은 값을 변수에 저장을 한 뒤, heapq.heappush()를 사용해서 새로운 스코빌지수를 heap에 넣어주었다.
종료 조건인 모두 K를 넘을 경우에를 계산해주기 위해 heap의 성질을 생각하여 heap[0]가 K이상일 경우에 종료시켜주었다.
또 하나의 종료조건은 모든 음식의 스코빌 지수를 K이상으로 만들 수 없는 경우이다. 이 경우는 더 이상 섞을 음식이 없을 경우 즉, heap에 하나의 지수만 남아있는 경우에 해당된다. 따라서 이에 해당하는 if-break문을 만들어 넣어주었다.
[나의 코드]
import heapq
def solution(scovile,K):
answer=0
heap=[]
for num in scovile:
heapq.heappush(heap,num)
while True:
check=heapq.heappop(heap)
if len(heap)==1:
return -1
if check>=K:
break
heapq.heappush(heap,check)
min_1=heapq.heappop(heap)
min_2=heapq.heappop(heap)
heapq.heappush(heap,min_1+min_2*2)
answer+=1
return answer
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
| [코딩테스트 고득점 KIT] 정렬 가장 큰 수 - Python (0) | 2021.09.28 |
|---|---|
| [코딩테스트 고득점 Kit] 정렬 K번째 수 - Python (0) | 2021.09.27 |
| [코딩테스트 고득점 Kit] 힙(Heap) 이중우선순위큐 (0) | 2021.09.24 |
| [코딩테스트 고득점 Kit] 스택/큐 프린트 - Python (0) | 2021.09.14 |
| [코딩테스트 고득점 Kit] 스택/큐 기능개발 - Python (0) | 2021.09.14 |
Comments