Welcome! ๐Ÿ™‹โ€โ™‚๏ธ View more

Engineering ๐Ÿ’ป/Algorithm

[์ž๋ฃŒ๊ตฌ์กฐ] ํž™ (Heaps)

DeepFlame 2022. 2. 5. 15:26

Heap์ด๋ž€?


๐Ÿ‘‰ ๊ฐœ๋…

์šฐ์„ ์ˆœ์œ„ํ(Priority Queue)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ์ตœ๋Œ€๊ฐ’์ด๋‚˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด O(1)์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋…ธ๋“œ ์ˆ˜์ •์‹œ, ํž™๊ตฌ์กฐ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด heapify๊ณผ์ •์„ ๊ฑฐ์ณ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

๐Ÿ‘‰ ํŠน์ง•

Tree ์ค‘ ๋ฐฐ์—ด์— ๊ธฐ๋ฐ˜ํ•œ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ํ˜•์‹(์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๊ณก์ฐจ๊ณก ์ฑ„์›Œ์ง„ ์ด์ง„ ํŠธ๋ฆฌ)์„ ๊ฐ€์ง€๋ฉฐ, ์ตœ๋Œ€ํž™/์ตœ์†Œํž™ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  • ์ตœ๋Œ€ ํž™ key(๋ถ€๋ชจ ๋…ธ๋“œ) ≥ key(์ž์‹ ๋…ธ๋“œ)
  • ์ตœ์†Œ ํž™ key(๋ถ€๋ชจ ๋…ธ๋“œ) ≤ key(์ž์‹ ๋ชจ๋“œ)

์ถœ์ฒ˜: https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html

 

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ๋์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. BST์˜ ๊ฒฝ์šฐ ์‚ฝ์ž…/์‚ญ์ œ๋ฅผ ์œ„ํ•ด์„œ ๊ฐ’์„ ์ฐพ์•„์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ–ˆ์ง€๋งŒ, ํž™์€ ์ผ๋‹จ ๋ฐฐ์—ด์˜ ๋งจ ๋์—์„œ ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— BST๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

 

Leetcode ๋ฌธ์ œ๋ฅผ ํ†ตํ•œ Heap ๊ตฌํ˜„


Python์—์„œ๋Š” heapq๋ฅผ ํ†ตํ•ด Heap์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ๊ฒƒ์ด๋‹ค. 

๋ฌธ์ œ: https://leetcode.com/problems/relative-ranks/

 

Relative Ranks - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

1. Heapq ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ํ’€์ด

 

2. ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ์™„์„ฑํ•œ ํ’€์ด