2020. 10. 30. 17:34ใBackend/๐ Python
heap ๋ชจ๋
ํ๋ก๊ทธ๋๋จธ์ค์ ์ผ๊ทผ์ง์ ๋ฌธ์ ๋ฅผ ํ๋ ์ค ํ ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์๊ฐํ๊ฒ ๋์ต๋๋ค.
heap ๋ชจ๋์ ์ฐ์ ํธ์ถํฉ๋๋ค.
import heapq
heapify()
์๋๋ works๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ํ ๊ตฌ์กฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ฝ๋์
๋๋ค. ์ด๋ heapify()๋ O(n)๋งํผ์ ์๊ฐ๋ณต์ก๋๊ฐ ์๊ตฌ๋ฉ๋๋ค.
ํ์ด์ฌ์ ํ๊ตฌ์กฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ํ ํํ์
๋๋ค.
works = [3,4,3]
heapq.heapify(works)
์ฃผ์ ํ ์ ์, works๋ ์ด๋ฏธ ๋ฆฌ์คํธ ํํ์ธ ๊ฐ์ฒด๋ฅผ heap๋ฐฐ์ด๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ O(n)์ ์๊ฐ๋ณต์ก๋๊ฐ ์์๋ฉ๋๋ค.
์์ ๋ฌ๋ฆฌ, ๋น ๋ฆฌ์คํธ๋ฅผ ๋์์ผ๋ก ํ ๊ตฌ์กฐํ๋ฅผ ํ ์์ ์๋์ ๊ฐ์ต๋๋ค.
heapq.heappush() , heapq.heappop()
works2 = []
heapq.heappush(4)
>>> [4]
heapq.heappush(9)
>>> [4, 9]
heapq.heappush(3)
>>> [3, 9, 4]
works2 ๋ฆฌ์คํธ๋ heappush() ๋ฉ์๋๋ก ์ธํด ํ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ๋์ง๋ง,
heapify()์๋ ๋ฌ๋ฆฌ heappush()์ ์๊ฐ ๋ณต์ก๋๋ O(log(n))์ด ๋ฉ๋๋ค.
์ด๋ heappush()์ ๋ฐ๋์ธ heappop()๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์ผํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
works = [3, 9, 4]
heapq.heappop(works)
>>> [4, 9]
๊ฒฐ๋ก
heapq.heapify()์ ์๊ฐ๋ณต์ก๋๋ O(n)
heapq.heappush() , heapq.heappop()์ ์๊ฐ๋ณต์ก๋๋ O(log(n))
'Backend > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌ] 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ 1์ฐจ์ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ธฐ (0) | 2020.12.30 |
---|---|
ํ์ด์ฌ ๋์ ๋๋ฆฌ value ๊ธฐ์ค ์ ๋ ฌ (key, lambda) (0) | 2020.11.22 |
Stack, Queue (0) | 2020.11.09 |
strํ์์ listํ / ํ๋ก๊ทธ๋๋จธ์ค ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (level1) (0) | 2020.11.09 |
OR ( | ) ์ฐ์ฐ์ (0) | 2020.06.22 |