11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
- heap은 자동으로 최소값이 앞에 오도록 정렬해준다. 따라서 자연수라면 input 앞에 -(n)를 붙이고 출력시 다시 -(-(n)) 을 해주어 최대힙을 구현할 수 있다.
#######################################################
import sys
import heapq
#######################################################
n = int(sys.stdin.readline())
l = []
for i in range(n):
inp = int(sys.stdin.readline())
if inp == 0: # input 이 0 이면
if len(l) == 0: # l에 원소가 없으면
print(0) # 0 출력
else: # l에 원소가 있으면
print(-(heapq.heappop(l))) # heappop 사용하면서 -를 다시 제거해준다.
else: # input 이 0 이 아니면
heapq.heappush(l, -(inp)) # input 에 - 를 붙여서 삽입해준다.
'Problem Solving > 백준' 카테고리의 다른 글
백준 문자열 집합 - 14425 [파이썬, 자료 구조, 해시를 사용한 집합과 맵, 문자열, 트리를 사용한 집합과 맵] (0) | 2023.05.04 |
---|---|
백준 절댓값 힙 - 11286 [파이썬, 자료 구조, 우선순위 큐] (0) | 2023.05.04 |
백준 최소 힙 - 1927 [파이썬, 자료 구조, 우선순위 큐] (0) | 2023.04.22 |
백준 1076 저항 [파이썬, 구현] (0) | 2023.03.24 |
백준 9012 괄호 [파이썬, 자료 구조, 문자열, 스택] (0) | 2023.03.23 |
댓글