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

๋ชฉ๋ก์Šคํƒ (2)

DATA101

[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ(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) ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์„ ์ž…์„ ์ถœ ๋ฐฉ์‹์œผ๋กœ์„œ ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ํŠน์ง•์ด ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์˜ ..

์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ ์ดํ•ด(+ Python)

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. ์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? 2. ์Šคํƒ ๋™์ž‘ ์˜ˆ์‹œ 3. ์Šคํƒ ๊ตฌํ˜„(Python) 1. ์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋Šฆ๊ฒŒ ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ์„œ ์„ ์ž…ํ›„์ถœ(ๅ…ˆๅ…ฅๅพŒๅ‡บ) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ 1 ๊ณผ ๊ฐ™์ด ์ž…๊ตฌ์™€ ์ถœ๊ตฌ๊ฐ€ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ "๋ฐ•์Šค ์Œ“๊ธฐ"๋ฅผ ์—ฐ์ƒํ•˜์‹œ๋ฉด ๊ธฐ์–ตํ•˜๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์•„๋ž˜ 2๊ฐ€์ง€ ํ•ต์‹ฌ์ ์ธ ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฝ์ž…(Push) ๋ฐ์ดํ„ฐ ์‚ญ์ œ(Pop) ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow)์™€ ์–ธ๋”ํ”Œ๋กœ์šฐ(Underflow) ๋ฐœ์ƒ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ: ์–ด๋– ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ..