티스토리 뷰
이해도
★★★☆☆
소감
힙 자료구조에 대해 알게되었다.
파이썬 힙큐(heapq) 모듈을 사용하여 구현하는 방법을 알게 되었다.
힙을 만드는 방법
방법 1. 빈 리스트 생성 후 heappush 함수로 넣기
방법 2. heapify 함수로 리스트를 바로 힙으로 바꾸기
-> 처음에 이 두 개를 같이 써서 시간초과가 났었다. heapify 사용할 경우, 새로운 변수에 넣는게 아니라 리스트를 힙 자체로 변환한다는 점에 주의하자!
- heapify 하면 기존 리스트를 바로 힙으로 변환한다.
- heappush 를 하면 아이템이 힙에 들어가는데, 자동적으로 가장 작은 숫자가 맨 앞으로 간다.
- heappop 을 하면 힙에서 가장 작은 아이템을 반환하며, 이는 heap[0] 과도 같다.
- heappushpop 도 있는데 효율적이라고 한다.
from heapq import heapify, heappush, heappop
def solution(scoville, K):
answer = 0
# 방법1 heapq.heapify(x) 리스트 x를 선형 시간으로 제자리에서 힙으로 변환
heapify(scoville)
# 방법2 heapq.heappush(heap, item)
h = []
for food in scoville:
heappush(h, food)
# scoville의 길이는 2 이상이다.
while len(scoville) >= 2:
f1 = heappop(scoville)
f2 = heappop(scoville)
heappush(scoville, f1 + f2 * 2)
answer += 1
# 스코빌 최소값이 K 이상이면
if scoville[0] >= K:
return answer
return -1
'Algorithm' 카테고리의 다른 글
[백준][2075][우선순위큐] N번째 큰 수 python (211030) (0) | 2021.10.31 |
---|---|
[Programmers][해시(Hash)] 완주하지 못한 선수 python (211028) (0) | 2021.10.28 |
정렬 알고리즘 정리&비교 (진행중..) (0) | 2021.10.25 |
계산기에서 Stack을 활용하는 방법 (0) | 2021.10.22 |
[SWEA][stack] 4866_괄호검사 (211019) (0) | 2021.10.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 클린코더
- 코딩도서
- 임대차3법
- 개발자책추천
- 깃허브계정
- 맥과윈도우로깃허브
- 개발도서추천
- 디즈니얼굴
- 개발자커리
- SSAFY
- 한글무료폰트추천
- 개발언어추천
- 무료폰트추천
- ssafy결과
- ssafy6기
- 폰트추천
- 싸피6기
- intj여자
- 개발자
- 개발자로드맵
- ssafy합격후기
- 브왈라
- 싸피
- 상업용무료폰트
- 개발언어순위
- 개발자도서추천
- ssafy후기
- 깃허브계정2개
- 폰트
- 클린코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함