[Python] heapq ๋ชจ๋“ˆ

MariGoldยท2023๋…„ 8์›” 23์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
3/11
post-thumbnail

๐Ÿ’กheapq ๋ชจ๋“ˆ๐Ÿ’ก

heapq ๋ชจ๋“ˆ์€ ์šฐ์„ ์ˆœ์œ„ ํ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„์„ ์ œ๊ณตํ•œ๋‹ค. ํž™์€ ๋ชจ๋“  ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š” ์ด์ง„ํŠธ๋ฆฌ์ด๋‹ค.

๐Ÿ’กheapq ๋ชจ๋“ˆ ํ•จ์ˆ˜๐Ÿ’ก

(1) heappush(heap, item) ํ•จ์ˆ˜

item๊ฐ’์„ heap์— ์ถ”๊ฐ€ํ•œ๋‹ค.

import heapq

heap = []
heapq.heappush(heap, 50)
heapq.heappush(heap, 10)
heapq.heappush(heap, 20)

>>> print(heap)
[10, 50, 20]

(2) heappop(heap) ํ•จ์ˆ˜

heap์—์„œ ๊ฐ€์žฅ ์ž‘์€ ํ•ญ๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด ๋•Œ, heap์ด ๋น„์–ด์žˆ์œผ๋ฉด IndexError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

import heapq

heap = [10, 50, 20]
heapq.heappop(heap)

>>> print(heap)
[20, 50]

(3) heappushpop(heap, item) ํ•จ์ˆ˜

heap์— tiem์„ ์ถ”๊ฐ€ํ•˜๊ณ , ehap์—์„œ ๊ฐ€์žฅ ์ž‘์€ ํ•ญ๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค. heappushํ•œ ๋‹ค์Œ heappop์„ ๊ฐ๊ฐ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค.

import heapq

heap = [10, 50, 20]
heapq.heappushpop(heap, 90)

>>> print(heap)
[20, 50, 90]

(4) heapify(x) ํ•จ์ˆ˜

list x๋ฅผ heap์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

import heapq

heap = [4, 1, 7, 3, 8, 5]
heapq.heapify(heap)

>>> print(heap)
[1, 3, 5, 4, 8, 7]

(5) nsmallest(n, heap, key = None) ํ•จ์ˆ˜

heap์— ์˜ํ•ด ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ n๊ฐœ์˜ ๊ฐ€์žฅ ํฐ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ list๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

import heapq

heap = [1, 3, 5, 4, 8, 7]

>>> print(heapq.nsmallest(3, heap))
[1, 3, 4]

(6) nlargest(n, heap, key = None) ํ•จ์ˆ˜

heap์— ์˜ํ•ด ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ n๊ฐœ์˜ ๊ฐ€์žฅ ์ž‘์€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ list๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

import heapq

heap = [1, 3, 5, 4, 8, 7]

>>> print(heapq.nlargest(3, heap))
[8, 7, 5]
profile
์กฐ๊ธˆ์”ฉ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ์‹ ์ž… ๊ฐœ๋ฐœ์ž :)

0๊ฐœ์˜ ๋Œ“๊ธ€