큐

  • μ²˜μŒμ— μ €μž₯ν•œ 데이터λ₯Ό κ°€μž₯ λ¨Όμ € κΊΌλ‚΄λŠ” μ„ μž…μ„ μΆœ (FIFO : First In First Out) ꡬ쑰둜 λ˜μ–΄ μžˆλ‹€.
  • μž…μΆœλ ₯이 μ–‘λ°©ν–₯μ—μ„œ μ΄λ£¨μ–΄μ§€λŠ” 데이터 ꡬ쑰이닀.
  • μ‚½μž… 연산을 Enqueue μ‚­μ œ 연산을 Dequeue 라고 ν•œλ‹€.

단점

  • 데이터 μ‚½μž… ν›„ 계속 ν•­λͺ© μ‚­μ œλ₯Ό ν•˜λ©΄ REAR 와 FRONT κ°€ λ§Œλ‚˜κ²Œ λ˜μ–΄ 곡백 Queue κ°€ 됨에도 λΆˆκ΅¬ν•˜κ³  μ˜€λ²„ ν”Œλ‘œμš° ν˜„μƒμ΄ 생겨 λ©”λͺ¨λ¦¬λ‚­λΉ„ ν˜„μƒμ΄ μƒκΈ°κ²Œ λœλ‹€.

μš©λ„

  • OS 의 μž‘μ—… μŠ€μΌ€μ₯΄λ§
  • λŒ€κΈ°ν–‰λ ¬ 처리

μœ μ˜μ‚¬ν•­

Queue μ—μ„œ 데이터λ₯Ό μΆ”μΆœν•  λ•ŒλŠ” 첫번째 μ €μž₯된 데이터λ₯Ό μ‚­μ œν•˜λ―€λ‘œ λ°°μ—΄λ¦¬μŠ€νŠΈμ™€ 같은 λ°°μ—΄ 기반 Collection Class λ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터λ₯Ό κΊΌλ‚Όλ•Œλ§ˆλ‹€ λΉˆκ³΅κ°„μ„ μ±„μš°κΈ° μœ„ν•΄ λ°μ΄ν„°μ˜ 볡사가 λ°œμƒν•œλ‹€.

μ΄λŠ” μ„±λŠ₯μ €ν•˜λ₯Ό μ•ΌκΈ° μ‹œν‚€κΈ° λ•Œλ¬Έμ— μ—°κ²° 리슀트 (Linked List) 둜 κ΅¬ν˜„ ν•˜λŠ”κ²ƒμ΄ μ ν•©ν•˜λ‹€.

Priority Queue (μš°μ„ μˆœμœ„ 큐)

μš°μ„ μˆœμœ„κ°€ 높은 데이터가 λ¨Όμ € μž‘μ—… λœλ‹€.

κ΅¬ν˜„ 방법

  • 배열을 기반으둜 κ΅¬ν˜„
  • μ—°κ²°λ¦¬μŠ€νŠΈλ₯Ό 기반으둜 κ΅¬ν˜„
  • νž™ (Heap) μ΄μš©ν•˜μ—¬ κ΅¬ν˜„

데이터가 μ μ„λ•ŒλŠ” λ¬Έμ œκ°€ μ—†μ§€λ§Œ _데이터가 λ§Žμ„ κ²½μš°μ—λŠ” λ…Έλ“œ μˆ˜μ— λΉ„λ‘€ν•΄μ„œ 비ꡐλ₯Ό ν•˜κΈ° λ•Œλ¬Έμ— μ„±λŠ₯μ €ν•˜μ˜ 이슈_κ°€ μžˆλ‹€.
λ”°λΌμ„œ 주둜 νž™ (Heap) 을 μ΄μš©ν•˜μ—¬ κ΅¬ν˜„ ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

데큐 / 디큐 / 덱 (Deque : Double-End Queue)

  • Queue 와 Stack 을 합쳐놓은 ν˜•νƒœμ΄λ‹€.
  • λ‘κ°œμ˜ 포인터λ₯Ό μ‚¬μš©ν•˜μ—¬ μ–‘μͺ½μ—μ„œ μ‚½μž…κ³Ό μ‚­μ œλ₯Ό λ°œμƒμ‹œν‚¬μˆ˜ μžˆλ‹€.

νŠΉμ§•

  • 크기가 가변적이닀.
    • λ¦¬μŠ€νŠΈμ™€ 같이 데이터λ₯Ό 담을 수 μžˆλŠ” 크기가 가변적이닀.
  • μ•žκ³Ό λ’€μ—μ„œ μ‚½μž…κ³Ό μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€.
  • κ΅¬ν˜„μ΄ 쉽지 μ•Šλ‹€.
  • 랜덀 접근이 κ°€λŠ₯ν•˜λ‹€.
  • 쀑간에 λ°μ΄ν„°μ˜ μ‚½μž… 및 μ‚­μ œκ°€ μš©μ΄ν•˜μ§€ μ•Šλ‹€.
    • λ˜λ„λ‘μ΄λ©΄ 쀑간에 데이터λ₯Ό μ‚½μž…ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 것은 ν”Όν•΄μ•Ό ν•˜λ©°, μ‚½μž…κ³Ό μ‚­μ œλ₯Ό 쀑간에 ν•œλ‹€λ©΄ μ‚½μž…κ³Ό μ‚­μ œν•œ μœ„μΉ˜μ˜ 데이터λ₯Ό λͺ¨λ‘ 이동해야 ν•œλ‹€.

쀑간에 데이터 μ‚½μž… μ‹œ

데큐_μ‚½μž…

쀑간에 데이터 μ‚­μ œ μ‹œ

데큐_μ‚­μ œ

Deque λ₯Ό μ‚¬μš©ν•˜λŠ” 경우

λ‹€μŒκ³Ό 같은 경우 Deque λ₯Ό μ‚¬μš©ν•˜λ©΄ νš¨κ³Όμ μ΄λ‹€.

  • μ•žκ³Ό λ’€μ—μ„œ μ‚½μž… ν˜Ήμ€ μ‚­μ œλ₯Ό ν•œλ‹€.
    • STL Container 라이브러리 μ€‘μ—μ„œ Deque μ‚¬μš©ν• λ•Œ μ„±λŠ₯이 κ°€μž₯ μ’‹λ‹€.
  • μ €μž₯ν•  λ°μ΄ν„°μ˜ κ°œμˆ˜κ°€ 가변적이닀.
    • Deque λŠ” λ™μ μœΌλ‘œ 크기가 λ³€ν•˜λ―€λ‘œ μœ μ—°ν•˜κ²Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
  • 검색을 거의 ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • λ§Žμ€ 데이터λ₯Ό μ €μž₯ν•˜λ©° 검색이 ν•„μš”ν•œ 경우라면 Map, Set, HashMap 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•΄μ„œ μ‚¬μš©ν•˜λŠ”νŽΈμ΄ νš¨κ³Όμ μ΄λ‹€.
  • 데이터 접근을 λžœλ€ν•˜κ²Œ ν•˜κ³  μ‹Άλ‹€.
    • Vector 와 같이 랜덀 접근이 κ°€λŠ₯ν•˜λ‹€. (μ‚¬μš©λ°©λ²•λ„ κ°™μŒ)