[파이썬] 백준 11279,11286 : 최대 힙, 최소힙 (실버2)
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
문제
풀이
0.방향성 생각
최대힙
입력값이 0 이상의 정수인 경우의 최대 힙이므로 입력값을 음수로 넣고 정렬한다.
1 2 3을 넣으면 -3 -2 -1로 정렬이되고 1이 들어올 경우 -3 -2 -1 -1이 되어 가장 작은 값인 -3을 내보낸다.
출력된 값에 다시 -1을 곱해서 출력한다.
최소힙
최소힙은 그냥 heapq 사용해주면 된다.
1. 전체 코드
최대힙
import heapq
import sys
input = sys.stdin.readline
t = int(input())
max_heap = []
for i in range(t):
n = int(input())
if n>0 :
heapq.heappush(max_heap,-n)
elif n==0 :
if not max_heap :
print(0)
else :
x = heapq.heappop(max_heap)
print(-x)
최소힙
import heapq
import sys
input = sys.stdin.readline
t = int(input())
min_heap = []
for i in range(t):
n = int(input())
if n>0 :
heapq.heappush(min_heap,n)
elif n==0 :
if not min_heap :
print(0)
else :
x = heapq.heappop(min_heap)
print(x)
난이도 보다는 개념을 알고있는지 체크하는 문제
'Algorithm > Data Structures' 카테고리의 다른 글
[파이썬] 프로그래머스 : 시소 짝꿍 (Lv.2) (0) | 2023.07.08 |
---|---|
[파이썬] 프로그래머스 : 야근지수 (Lv.3) (0) | 2023.07.08 |
[파이썬] 프로그래머스 : 큰 수 만들기 (Lv.2) (0) | 2023.07.08 |
[파이썬] 백준 5577: RBY팡! (골드2) (0) | 2023.07.02 |
[파이썬] 백준 11286 : 절댓값 힙 (실버1) (0) | 2023.06.04 |
[파이썬] 백준 9935 : 문자열 폭발 (골드4) (0) | 2023.05.12 |
[파이썬] 백준 5430 : AC (골드5) (0) | 2023.05.12 |
댓글