문제 출처:
https://www.acmicpc.net/problem/1927
https://www.acmicpc.net/problem/11279
https://www.acmicpc.net/problem/11286
1. 문제 접근 방식
일단 heapq 모듈에 대한 공부를 하고 하나씩 힙에 heappush한다. heapq 모듈은 최소힙만 구현이 가능하므로 최대힙은 x대신에 -x를 삽입했고 절댓값 힙은 x대신에 (abs(x), x)를 삽입해서 해결했다.
2. 내가 푼 코드
1927
import sys
import heapq
case = int(sys.stdin.readline())
heap=[]
for _ in range(case):
x = int(sys.stdin.readline())
if x != 0:
heapq.heappush(heap,x)
else:
if len(heap) == 0:
print(0)
else:
print(heapq.heappop(heap))
11279
import sys
import heapq
case = int(sys.stdin.readline())
heap=[]
for _ in range(case):
x = int(sys.stdin.readline())
if x != 0:
heapq.heappush(heap,-x)
else:
if len(heap) == 0:
print(0)
else:
print(-heapq.heappop(heap))
11286
import sys
import heapq
case = int(sys.stdin.readline())
heap = []
for _ in range(case):
x = int(sys.stdin.readline())
if x != 0:
heapq.heappush(heap,(abs(x),x))
else:
if len(heap) == 0:
print(0)
else:
print(heapq.heappop(heap)[1])
3. 결과 및 느낀점
이번주는 우선순위 큐(힙)에 대한 이해를 하고 적용을 시키자.
힙을 쓸 때 sort를 쓸 때 아직 구분이 안가는데 확실히 이해해서 적재적소에 사용할 수 있도록 하자.
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 19638 Python (0) | 2021.09.14 |
---|---|
[Boj/백준] 15903 Python (0) | 2021.09.14 |
[Boj/백준] 5464 Python (0) | 2021.09.11 |
[Boj/백준] 18115 Python (0) | 2021.09.10 |
[Boj/백준] 13417 Python (0) | 2021.09.08 |