KEEP GOING
백준 11279번: 최대 힙(maxHeap) 본문
반응형
https://www.acmicpc.net/problem/11279
문제
널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
- 배열에 자연수 x를 넣는다.
- 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
입력
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 자연수는 231보다 작다.
1. 코드 구현
import sys
import heapq
n = int(sys.stdin.readline())
h = []
for _ in range(n):
data = int(sys.stdin.readline())
if data !=0:
heapq.heappush(h,-data)
else:
if h:
print(-heapq.heappop(h))
else:
print(0)
반응형
'code review > stack-queue' 카테고리의 다른 글
[python] 프로그래머스 : 기능개발 (stack, queue) (0) | 2022.02.18 |
---|---|
[python] 백준 2504번 : 괄호의 값 (stack) (0) | 2022.02.02 |
[python] 백준 1935번 : 후위 표기식2 (0) | 2022.01.27 |
[python] 백준 2164번 : 카드2 (queue, 2*n-m 규칙 찾기) (0) | 2022.01.27 |
백준 11286번: 절댓값 힙(우선순위 큐) (0) | 2021.11.23 |
Comments