Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.3 이중 우선순위 큐 [Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42628
- 힙(heap)
- 🔑 최솟값 제거는 heappop()을 사용
- 🔑 최댓값 제거를 위해 pop()을 했으나 힙 자료구조는 모든 원소를 정렬하지 않기 때문에 마지막 값이 최댓값이라는 보장이 없다.
- 🔑 그래서 최댓값을 구할 때는 sort()로 새롭게 정렬을 해주고 pop()을 했다. (정답 리턴 때도 마찬가지)
from heapq import *
def solution(operations):
heap = []
for i in operations:
if i[0] == "I":
heappush(heap, int(i[2:])) # 숫자 부분만 슬라이싱, 형 변환 후 힙에 추가
elif i == "D -1" and heap:
heappop(heap) # 최솟값 제거
elif i == "D 1" and heap:
heap.sort() # 힙을 다시 정렬 (heapq는 정렬을 끝까지 하지 않기 때문)
heap.pop() # 최댓값 제거
heap.sort() # 힙을 다시 정렬 (heapq는 정렬을 끝까지 하지 않기 때문)
if heap:
return [heap[-1], heap[0]] # [최댓값, 최솟값] 리턴
return [0, 0] # 비어 있으면 [0, 0] 리턴
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 피로도 [Python, 파이썬] (0) | 2023.09.16 |
---|---|
[프로그래머스] Lv.2 땅따먹기 [Python, 파이썬] (0) | 2023.09.03 |
[프로그래머스] Lv.3 디스크 컨트롤러 [Python, 파이썬] (0) | 2023.09.01 |
[프로그래머스] Lv.2 큰 수 만들기 [Python, 파이썬] (0) | 2023.08.31 |
[프로그래머스] Lv.2 튜플 [ Python, 파이썬] (0) | 2023.08.30 |
Comments