사용 언어 - Python3
문제 - 이중우선순위큐
정답
import heapq (정답 맞춘 여부 X)
answer 정답을 입력할 리스트
heap = [] 빈 리스트에 push&pop 진행
oprations 한개씩 확인
빈칸을 기준으로 x와 num으로 split한다. 이때 num은 수치형으로 전환해준다.
만약 x 가 "I"라면,
heap와 num을 heappush해준다.
만약 x가 "D"이고, num이 1이라면,
heap 리스트에 값이 있다면,
heap 리스트의 최대값을 계산해주고 그 값을 remove 제거해준다.
만약 "D -1" 이라면,
heap 리스트에 값이 있다면,
heap 리스트의 최솟값을 삭제해준다. heap.heappop(heap)
연산 완료 후, heap 리스트에 값이 없다면 [0,0] return
heap 값이 있다면, [최대값,최솟값] = [max(heap), heapq.heappop(heap)] return
import heapq
def solution(operations):
answer = []
heap = []
for operation in operations:
x, num = operation.split()
num = int(num)
if x == 'I':
heapq.heappush(heap, num)
elif x == 'D' and num == 1:
if len(heap) != 0:
max_value = max(heap)
heap.remove(max_value) # 최대값 삭제
else:
if len(heap) != 0:
heapq.heappop(heap) # 최솟값 삭제
if len(heap) == 0:
answer = [0, 0]
else:
answer = [max(heap), heapq.heappop(heap)]
return answer
레퍼런스
- 정답 깃허브
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[프로그래머스] PCCP 모의고사 1회 4번 운영체제 (0) | 2023.12.14 |
---|---|
[프로그래머스] PCCP 모의고사 1회 3번 유전법칙 (0) | 2023.12.14 |
[프로그래머스 lv 3] 디스크 컨트롤러 (0) | 2023.06.19 |
[프로그래머스 lv 2] 더 맵게 (0) | 2023.06.16 |
우선순위 큐와 힙 (0) | 2023.06.16 |
댓글