Skip to content

Latest commit

Β 

History

History
52 lines (37 loc) Β· 1.82 KB

File metadata and controls

52 lines (37 loc) Β· 1.82 KB

μŠ€νƒ(Stack)κ³Ό 큐(Queue) 그리고 덱(Deque)

μŠ€νƒκ³Ό νλŠ” LIFO, FIFO ꡬ쑰둜 μ•Œλ €μ§„ μ€‘μš”ν•˜κ³  λ§€λ ₯적인 μ„ ν˜• μžλ£Œκ΅¬μ‘°μ΄λ‹€. μŠ€νƒμœΌλ‘œ 큐λ₯Ό κ΅¬ν˜„ν•  μˆ˜λ„, 큐둜 μŠ€νƒμ„ κ΅¬ν˜„ν•  μˆ˜λ„ μžˆλ‹€. λ˜ν•œ μŠ€νƒκ³Ό 큐의 LIFO, FIFO κΈ°λŠ₯을 λͺ¨λ‘ ν™œμš©ν•  수 μžˆλŠ” λ±μ΄λΌλŠ” μžλ£Œκ΅¬μ‘°λ„ μžˆλ‹€.

Stack (μŠ€νƒ) - LIFO

  • μ„ ν˜• 자료ꡬ쑰
  • μ‚½μž…, μ‚­μ œ 연산이 ν•œ λ°©ν–₯μ—μ„œ 이루어진닀.
  • LIFO(Last In First Out) : λ‚˜μ€‘μ— λ“€μ–΄κ°„ μ›μ†Œκ°€ λ¨Όμ € λ‚˜μ˜€λŠ” ꡬ쑰이닀.

Stack μš©μ–΄

  • Top : μŠ€νƒμ— 데이터가 μ‚½μž…λ  μœ„μΉ˜

Stack ν™œμš©

  • μ‹œμŠ€ν…œ μŠ€νƒ(System Stack) / μ‹€ν–‰μ‹œκ°„ μŠ€νƒ(Runtime stack) : ν”„λ‘œκ·Έλž¨μ˜ ν•¨μˆ˜ 호좜과 볡귀에 λ”°λ₯Έ μ‹€ν–‰ μˆœμ„œ 관리
  • μΈν„°λŸ½νŠΈ 루틴 처리
  • μˆ˜μ‹μ˜ ν›„μœ„ ν‘œκΈ°λ²•(Postfix Notation)
  • μˆ˜μ‹μ˜ κ΄„ν˜Έμ‹ 검사
  • μ›Ή λΈŒλΌμš°μ € λ°©λ¬Έ 기둝 (λ’€λ‘œκ°€κΈ°)
  • μ‹€ν–‰ μ·¨μ†Œ (undo)

Queue (큐) - FIFO

  • μ„ ν˜• 자료ꡬ쑰
  • ν•œ λ°©ν–₯μ—μ„œλŠ” μ‚½μž… 연산이, λ°˜λŒ€ λ°©ν–₯μ—μ„œλŠ” μ‚­μ œ 연산이 이루어진닀.
  • FIFO(First In First Out) : λ¨Όμ € λ“€μ–΄κ°„ μ›μ†Œκ°€ λ¨Όμ € λ‚˜μ˜€λŠ” ꡬ쑰이닀.

Queue μš©μ–΄

  • Front / Head : νμ—μ„œ 데이터가 μ‚­μ œλ  μœ„μΉ˜
  • Rear / Tail : νμ—μ„œ λ§ˆμ§€λ§‰ 데이터가 μ‚½μž…λœ μœ„μΉ˜

Queue ν™œμš©

  • ν”„λ‘œμ„ΈμŠ€ λ ˆλ”” 큐
  • μŠ€μΌ€μ₯΄λ§
  • λ„€νŠΈμ›Œν¬ νŒ¨ν‚· μ „μ†‘μ‹œ ν•„μš”ν•œ 버퍼 λŒ€κΈ° 큐
  • μΊμ‹œ(Cache) κ΅¬ν˜„
  • javascript의 Event Loop 관리 (비동기 처리)
  • λ„ˆλΉ„ μš°μ„  탐색(BFS, Breadth-First Search)
  • ν”„λ¦°ν„°μ˜ 좜λ ₯ 처리

Deque (덱)

  • μ„ ν˜• 자료ꡬ쑰
  • Double-ended Queue
  • μ–‘λ°©ν–₯μ—μ„œ μ‚½μž…, μ‚­μ œ 연산이 λͺ¨λ‘ μ΄λ£¨μ–΄μ§€λŠ” 큐λ₯Ό λ§ν•œλ‹€.
  • Stack(LIFO), Queue(FIFO)처럼 ν™œμš©μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— λŒ€μ‹ ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.