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

๋ชฉ๋ก์šฐ์„ ์ˆœ์œ„ ํ (2)

Hey Tech

๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ด (+Python ๊ตฌํ˜„)

๐Ÿ“š ๋ชฉ์ฐจ 1. ์ตœ๋‹จ๊ฒฝ๋กœ(๊ธธ์ฐพ๊ธฐ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? 2. ๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? 3. ๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ž‘ ๊ณผ์ • 4. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•1: ์ผ๋ฐ˜์ ์ธ ๊ตฌํ˜„ 4.1. ์ฝ”๋“œ ํ•ด์„ค 4.2. ์ „์ฒด ์ฝ”๋“œ 4.3. ์‹œ๊ฐ„ ๋ณต์žก๋„ 5. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•2: ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ฐœ์„  5.1. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue) ์ž๋ฃŒ๊ตฌ์กฐ 5.2. ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ 5.3. ์šฐ์„ ์ˆœ์œ„ ํ ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ๋ฐ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ๊ณผ์ • 5.4. ์šฐ์„ ์ˆœ์œ„ ํ ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„(Python) 1. ์ตœ๋‹จ๊ฒฝ๋กœ(๊ธธ์ฐพ๊ธฐ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ธธ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ๋ง ๊ทธ๋Œ€๋กœ ํŠน์ • ์ง€์ ๊นŒ์ง€ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ์—์„œ ๋นˆ์ถœ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ..

[์ž๋ฃŒ๊ตฌ์กฐ] ํž™(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)์— ์˜ค๋Š” ๊ฒŒ ํŠน์ง•์ž…๋‹ˆ๋‹ค. * ์™„..