링크 : https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
- 문제
- 소요시간: 개념 배우기
- 설계하기(접근방법)
1. n을 입력받는다, heap을 초기화한다
2. 알고리즘 해석
x를 n번 입력받는다.
0이 아닌 경우 -> heap에 heappush()를 한다.
다만 우리가 필요한 것은 최대 값이니 인자를 -x로 push 해주어야 한다
0인 경우
-> heap에 원소가 없는 경우 0 출력
-> heap에 원소가 있는 경우 heappop()후 값 출력
- 코드(출력)
import sys
from heapq import *
heap = []
n = int(input())
for i in range(n):
x = int(sys.stdin.readline())
if x == 0:
if heap:
print(-heappop(heap))
else:
print(0)
else:
heappush(heap, -x)
- 얻어갈 부분
1. heap을 import하고 선언하는 방법, 메서드를 배웠다
2. 최대 힙, 최소 힙을 사용하는 경우 각각 인자를 부호를 바꾸어 넣어주어야 한다.
'알고리즘(백준) > 자료구조' 카테고리의 다른 글
[알고리즘/자료구조] 11286번 : 절댓값 힙 - python (0) | 2023.03.18 |
---|---|
[알고리즘/자료구조] 4358번 : 생태학 - python (0) | 2023.03.17 |
[알고리즘/자료구조] 14425 번 : 문자열 집합 - python (0) | 2023.03.14 |
[알고리즘/자료구조] 1620 번 : 나는야 포켓몬 마스터 이다솜 - python (0) | 2023.03.13 |
[알고리즘/자료구조] 2800번 : 괄호제거 - python (0) | 2023.03.11 |