[백준/11279/파이썬(Pyhon)] 최대 힙 / heapq함수
코드
from sys import stdin
import heapq
heap = []
x = 0
N = int(stdin.readline())
for i in range(N):
x = int(stdin.readline())
if x > 0:
heapq.heappush(heap, -x)
elif x == 0:
if len(heap) == 0:
print(0)
else:
print(-(heapq.heappop(heap)))
- 파이썬에는 heapq라는 라이브러리가 있다. 힙 라이브러리이다. import 해준다.
- heap 리스트와 수를 넣거나 0을 입력할 x를 초기화해준다.
- N번 반복을 위해 N을 입력받는다.
- 반복문으로 , x>0일경우 (자연수일경우) heappush함수를 이용해 힙리스트에 x를 넣어줬다. 이때, -x로 넣어줬다.
- 파이썬 heapq함수는 기본이 최소 힙이다. 따라서 -를 대입하면 -5,-4,-3,-2,-1.. 순으로 절댓값시 수가 큰 순서대로 나오기 때문에 , -를 넣어줬다.
- x==0일경우 heapq.heapop()함수를 이용해 힙리스트에서 pop해줬다. 힙은 우선순위대로 pop하는데, 최소힙이므로 수가 가장 작은 것부터 pop한다. 그러면 절댓값시 수가 큰 숫자(-5 -> -4 -> -3)순으로 나오게 될 것이다. 그걸 다시 -를 붙여줘서 양수가 나오게 했다. ==> 최대힙 구현
결과
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준/24480/파이썬(Python)] dfs, 알고리즘 수업 - 깊이 우선탐색2 (0) | 2023.03.13 |
---|---|
[백준/24479/파이썬(Python)] DFS, 알고리즘수업-깊이우선탐색1 (0) | 2023.03.06 |
[백준/1541/파이썬(Python)] 잃어버린 괄호 | 그리디 알고리즘 (0) | 2023.02.24 |
[백준/11399/파이썬(Python)] ATM 풀이 / 그리디 알고리즘 (0) | 2023.02.21 |
[백준/1920/파이썬(Python)] 수 찾기 풀이, set(집합) 자료형 특징 (0) | 2023.02.21 |
댓글