https://www.acmicpc.net/problem/1655
백준 1655 '가운데를 말해요' 문제입니다.
우선순위 큐를 이용하였는데 heap1, heap2를 만들고 heap1은 최대힙, heap2는 최소힙으로 구현합니다.
그리고 for문을 돌려서 input 배열의 짝수번 째 index에서는 마이너스를 취해서 heap1에 넣고
홀수번 째 index에서는 heap2에 넣습니다.
그리고 매번 -heap1[0]과 heap2[0]을 비교해서 -heap1[0]가 더 크다면 heap1, heap2에서 각각 pop하여
다른 곳에 넣어줍니다.
import sys
import heapq
input = sys.stdin.readline
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
heap1 = []
heap2 = []
for i in range(n):
if i % 2 == 0:
heapq.heappush(heap1, -nums[i])
else:
heapq.heappush(heap2, nums[i])
if i >= 1:
a = -heap1[0]
b = heap2[0]
if a > b:
x = heapq.heappop(heap2)
y = heapq.heappop(heap1)
heapq.heappush(heap1, -x)
heapq.heappush(heap2, -y)
print(-heap1[0])
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 1769번 : 3의 배수 (0) | 2022.04.04 |
---|---|
파이썬) 백준 알고리즘 | 17298번 : 오큰수 (0) | 2022.04.03 |
파이썬) 백준 알고리즘 | 2696번 : 중앙값 구하기 (0) | 2022.03.18 |
파이썬) 백준 알고리즘 | 11724번 : 연결 요소의 개수 (0) | 2022.03.18 |
파이썬) 백준 알고리즘 | 2792번 : 보석 상자 (0) | 2022.03.08 |
댓글