728x90
📌문제 출처
프로그래머스 LV 3
https://school.programmers.co.kr/learn/courses/30/lessons/42628
❓ 문제
📗 풀이 코드
'''
빈 heap 자료구조를 두개 만든다.
삽입 연산은 heappush, 최소값 삭제 연산은 heappop을 사용한다.
최대값 삭제 연산은 원소가 하나 남을 때까지 최소값 삭제 연산을 함과 동시에 다른 빈 heap에 삽입 연산을 진행한 후
heap 두개의 이름을 변경해준다.
'''
from heapq import heapify, heappush, heappop
def solution(operations):
heap1, heap2 = [],[]
for op in operations:
op, num = op.split()
num = float(num)
if op == 'I':
heappush(heap1,num)
else:
if num == -1: # 최소값 삭제 연산
if heap1: # 큐가 비어있지 않다면
heappop(heap1)
else: # 최대값 삭제 연산
while len(heap1) > 1 : # 하나 남을 때까지 heap1의 최소값을 heap2로 전달
heappush(heap2,heappop(heap1))
heap1,heap2 = heap2,[] # heap1, heap2 바꾸고, heap2는 비우기
if not heap1:
return [0,0]
if len(heap1)==1:
return [heap1[0],heap1[0]]
else :
min_ = heappop(heap1)
max_ = 0
while heap1:
max_ = heappop(heap1)
return [max_,min_]
'파이썬 문제풀이' 카테고리의 다른 글
[프로그래머스 파이썬] 네트워크 (0) | 2024.01.17 |
---|---|
[프로그래머스 파이썬] 땅따먹기 (0) | 2024.01.17 |
[프로그래머스 파이썬] 뒤에 있는 큰 수 찾기 (0) | 2024.01.16 |
[프로그래머스 파이썬] 행렬의 곱셈 (0) | 2024.01.15 |
[프로그래머스 파이썬] 정수 삼각형 (0) | 2024.01.15 |