티스토리 뷰
728x90
반응형
지난번 포스팅에서 이어집니다.
teus-kiwiee.tistory.com/60?category=924328
지난번, 단순 List를 사용해서, Scovile 지수가 원하는 값이 나올때까지 반복되는 매운음식 성애자 문제를 다뤘습니다.
하지만, 이때 List를 사용해서 효옹성 테스트를 지나가지를 못했습니다.
해당 문제에서는 Heap 구조를 사용해서 빠르게 Minimum 값을 찾는방법을 주요 메커니즘으로 사용합니다.
제가 Python으로 작성한 heap과 다르게,
Python 내장으로 clean code로 존재하는 heapq 패키지를 사용합니다.
해당 패키지를 사용하면, 특정 List에 heap 구조를 갖게 Element를 추가-삭제가 가능합니다.
아래는 heapq를 활용한 풀이법 결과입니다 :)
#heap을 사용하는 Python 내장함수
import heapq
def solution(scoville, K):
#heap이라는 List를 사용해서 heap 구축
heap = []
for i in scoville:
heapq.heappush(heap, i)
count = 0
while True:
#가장 최소값을 pop한 후, 해당 값이 K보다 작은지 여부 판단
temp1 = heapq.heappop(heap)
if temp1>=K:
break
#temp1이 K보다 작으면, temp2는 의미가 없으므로 별도의 판별 X
temp2 = heapq.heappop(heap)
#heap에 두개를 섞은 새로운 스코빌을 추가합니다.
heapq.heappush(heap, temp1 + temp2*2)
count +=1
if len(heap)==1 and heap[0]<K:
count = -1
break
answer = count
return answer
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
스택 - 주식가격 (0) | 2021.06.06 |
---|---|
탐욕법 - 조이스틱 (0) | 2021.06.02 |
정수 삼각형 (0) | 2021.03.20 |
Hash - 완주하지 못한 선수 (0) | 2021.03.14 |
완전탐색 - 소수 찾기(Prime Number Search) (0) | 2021.03.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 완전탐색 알고리즘
- GDC
- 병렬처리
- 코딩테스트
- heap
- stack
- SIMD
- Sort알고리즘
- Python
- 알고리즘
- hash
- 사칙연산
- Greedy알고리즘
- git
- C++
- 이분탐색
- Search알고리즘
- 분할정복
- 프로그래머스
- prime number
- 동적계획법
- AVX
- 컴퓨터그래픽스
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함