출처 : https://www.acmicpc.net/problem/11286
11286번: 절댓값 힙
첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
1) 요구사항 분석 : 문제 읽기
0이 주어진 회수만큼 출력
2) 설계 : 접근 방식
배열에서 가장 작은 값을 제거 -> 우선순위 큐, 최소힙을 이용
import heapq
절대값이니까 음수이면 -를 붙여서 최소힙에 넣어줌
import heapq
import sys
input = sys.stdin.readline
heap = []
n = int(input())
for num in range(n):
num = int(input())
# 절댓값이 가장 작은 값 -> 튜플
if num == 0:
if heap != []:
ans = heapq.heappop(heap)
print(ans[1])
else:
print(0)
elif num < 0:
tem = -num
heapq.heappush(heap, (tem, num))
else:
tem = num
heapq.heappush(heap, (tem, num))
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ / 백준] 1991 트리 순회 python / 파이썬 트리 (0) | 2023.09.10 |
---|---|
[BOJ / 백준] 1715 카드 정렬하기 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.08.19 |
[BOJ / 백준] 1927 최소 힙 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.07.25 |
[BOJ / 백준] 11279 최대 힙 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.07.14 |
[BOJ / 백준] 5014 스타트링크 python / 파이썬 bfs (0) | 2023.07.11 |
댓글