๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กํž™ ์ž๋ฃŒ๊ตฌ์กฐ (2)

DATA101

[์ž๋ฃŒ๊ตฌ์กฐ] ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!(+Python ๊ตฌํ˜„)

๐Ÿ“š ๋ชฉ์ฐจ 1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ 2. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ? 3. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜ 4. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋™์ž‘ ๊ณผ์ •(์ตœ์†Œ ํž™) 4.1. ๋ฐ์ดํ„ฐ ์‚ฝ์ž… 4.2. ๋ฐ์ดํ„ฐ ์‚ญ์ œ 5. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌํ˜„(Python) 5.1. heapq ์…‹์—… 5.2. ํž™ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…(heappush) 5.3. ํž™ ๋ฐ์ดํ„ฐ ์‚ญ์ œ(heappop) 5.4. ๋ฆฌ์ŠคํŠธ๋ฅผ ํž™์œผ๋กœ ๋ณ€๊ฒฝ(heapify) 1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๊ฐ€์žฅ ๋†’์€(ํ˜น์€ ๊ฐ€์žฅ ๋‚ฎ์€) ์šฐ์„ ์ˆœ์œ„(e.g., ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’)๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ *์™„์ „ ์ด์ง„ํŠธ๋ฆฌ(Complete Binary Tree) ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋†’์€(๋˜๋Š” ๊ฐ€์žฅ ๋‚ฎ์€) ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ๋ฃจํŠธ ๋…ธ๋“œ(root node)์— ์˜ค๋Š” ๊ฒŒ ํŠน์ง•์ž…๋‹ˆ๋‹ค. * ์™„..

[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!(+Python ๊ตฌํ˜„)

๐Ÿ“š ๋ชฉ์ฐจ 1. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ž€? 2. ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ 2.1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? 2.2. ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„ ๋ฐฉ์‹: ๋ฆฌ์ŠคํŠธ vs ํž™ 3. ํž™ ๊ธฐ๋ฐ˜์˜ ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„(Python) 3.1. heapq ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ๊ฐœ 3.1.1. ํž™ ์›์†Œ ์ถ”๊ฐ€(heappush) 3.1.2. ํž™ ์›์†Œ ์‚ญ์ œ(heappop) 3.1.3. ๋ฆฌ์ŠคํŠธ๋ฅผ ํž™์œผ๋กœ ๋ณ€๊ฒฝ(heapify) 3.2. ํž™ ๊ธฐ๋ฐ˜์˜ ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„ ์˜ˆ์‹œ 1. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ž€? ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ถœํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์„ ์ž…์„ ์ถœ ๋ฐฉ์‹์œผ๋กœ์„œ ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ํŠน์ง•์ด ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์˜ ..