문제 분석
- 절댓값 힙
- 배열에 0이 아닌 정수 x를 넣는다.
- 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거
- 절댓값이 가장 작은 값이 여러개 일 때 가장 작은 수를 출력하고 그 값을 배열에서 제거
- 이걸 확인하려면 +인지 -인지를 체크해 놓아야 한다.
코드 설계
- x를 힙에 넣을 때 ( 절댓값, 원래 값 )으로 넣는다.
정답 코드
import sys
input = sys.stdin.readline
import heapq
n = int(input())
heap = []
for _ in range(n) :
x = int(input())
if x == 0 :
if heap :
# print(heapq.heappop(heap))
abs_value, x_value = heapq.heappop(heap)
print(x_value)
else :
print(0)
else :
heapq.heappush(heap, (abs(x), x))
'코딩 테스트 > 백준' 카테고리의 다른 글
[Python] 백준 1182 부분수열의 합 (0) | 2025.02.21 |
---|---|
[Python] 백준 1715 카드 정렬하기 (0) | 2025.02.20 |
[Python] 백준 1927 최소 힙 (0) | 2025.02.20 |
[Python] 백준 2839 설탕 배달 (0) | 2025.02.20 |
[Python] 백준 2178 미로 탐색 (0) | 2025.02.19 |