λͺ©λ‘μŠ€νƒ (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) λ°œμƒμ— μœ μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ˜€λ²„ν”Œλ‘œμš°: μ–΄λ– ν•œ μžλ£Œκ΅¬μ‘°κ°€ μ €μž₯ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ 크기λ₯Ό 초..