반응형
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가
www.acmicpc.net
코드
import sys
import heapq
n = int(input())
heap = []
for i in range(n):
a = int(sys.stdin.readline())
if a == 0:
if heap:
print((-1)*heapq.heappop(heap))
else:
print(0)
else:
heapq.heappush(heap,(-1)*a)
설명
heapq 모듈을 사용했다.
heappop() 함수, heappush() 함수는 최소힙만 동작하기 때문에 최대힙을 구현하기 위해서는 약간의 변형이 필요하다.
넣어주는 값에 -1을 곱해 heap에 push를 해주면 가장 큰 값이 음수가 되면 가장 작은 값이 되기 때문에 최대힙 구현이 가능하다. heap에서 pop을 해줄 때만 -1을 다시 곱해주면 원래 숫자를 출력할 수 있다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 11286번 절댓값 힙 (0) | 2022.02.19 |
---|---|
[백준][Python] 14425번 문자열 집합 (0) | 2022.02.18 |
[백준][Python] 1918번 후위 표기식 (0) | 2022.02.17 |
[백준][Python] 5430번 AC (0) | 2022.02.16 |
[백준][Python] 18115번 카드 놓기 (0) | 2022.02.16 |
댓글