마음만 바쁜 사람
Published 2022. 4. 22. 14:18
11286- 절댓값 힙 ALGORITHM/BOJ

https://www.acmicpc.net/problem/11286

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

min-heap을 이용해 해결하면 된다. 절댓값이 작은 순서대로 정렬 되어야 하고 같은 값이 두개 이상이라면 이 중에서 원래 값이 더 작은(= 음수) 값을 먼저 출력해야 하므로 heapq의 min-heap에 (절댓값, 원래값)의 튜플 형태로 원소를 넣어 주면 퓨플의 순서대로 정렬을 할 수 있다.

 

 

import sys
import heapq
input = sys.stdin.readline
N = int(input())
pq = []
for _ in range(N):
    x = int(input())
    if x == 0:
        print(heapq.heappop(pq)[1] if pq else 0)
    else:
        heapq.heappush(pq, (abs(x), x))

heapq를 import하여 문제를 해결했다. heapq의 설명은 다음 글 참조.

2022.04.22 - [ALGORITHM/Data Structure] - [Python] min-hip을 이용한 Priority Queue

 

[Python] min-hip을 이용한 Priority Queue

- 최소 힙(min-heap)의 구조 - 삽입/삭제: O(logN) import heapq로 사용 가능 push: heapq.heappush(hq, item) pop: heapq.heappop(hq) import heapq pq = [] heapq.heappush(pq, 6) heapq.heappush(pq, 12) heap..

notbusyperson.tistory.com

 

'ALGORITHM > BOJ' 카테고리의 다른 글

16946-벽 부수고 이동하기 4  (0) 2022.04.26
2178-미로탐색  (0) 2022.04.26
1058-친구  (0) 2022.04.25
11724-연결 요소의 개수  (0) 2022.04.25
1302-베스트셀러  (0) 2022.04.22
profile

마음만 바쁜 사람

@훌루훌루

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!