본문 바로가기
Problem Solving/BOJ

[BOJ][Python]11279번 풀이

by NoiB 2022. 6. 14.
반응형

https://www.acmicpc.net/problem/11279

 

11279번: 최대 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가

www.acmicpc.net

import heapq
import sys
ssr = sys.stdin.readline

n = int(ssr())
h = []
for _ in range(n):
    a = int(ssr())
    if a > 0:
        heapq.heappush(h,-a)
    else:
        if len(h) == 0:
            print(0)
        else:
            print(-heapq.heappop(h))

이번엔 최대힙입니다. 파이썬의 heapq 모듈의 경우 기본적으로 최소힙이기 때문에 최대힙으로 사용하려면 약간 꼼수가 필요한데요. 원래 숫자를 음수로 바꿔버리면 큰 수일수록 작은 수가 되기 때문에 사실은 가장 큰 수를 맨 위 노드에 위치시킬수 있게 되는 것이죠. 마지막에 출력할 때 다시 부호를 바꿔주면 문제없이 제대로 출력되는 것을 확인할 수 있습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]11724번 풀이  (0) 2022.06.16
[BOJ][Python]2161번 풀이  (0) 2022.06.14
[BOJ][Python]9372번 풀이  (0) 2022.06.13
[BOJ][Python]19947번 풀이  (0) 2022.06.13