λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“š Computer Science/Data Structure

[자료ꡬ쑰] 큐(Queue)

by hyebin (Helia) 2023. 3. 6.
λ°˜μ‘ν˜•

큐(Queue)

  • μ„ μž…μ„ μΆœ(First-In-First-Out, FIFO) 원칙에 따라 데이터λ₯Ό μ €μž₯ν•˜λŠ” 자료ꡬ쑰
  • κ°€μž₯ λ¨Όμ € λ“€μ–΄μ˜¨ 데이터가 κ°€μž₯ λ¨Όμ € λ‚˜κ°€λŠ” ꡬ쑰
  • ν•œμͺ½ λμ—μ„œλ§Œ μ‚½μž…μ΄ 이루어지고, λ‹€λ₯Έ ν•œμͺ½ λμ—μ„œλŠ” μ‚­μ œ μ—°μ‚°λ§Œ μ΄λ£¨μ–΄μ§€λŠ” μœ ν•œ μˆœμ„œ 리슀트
  • μΌμƒμƒν™œμ—μ„œ 쀄을 μ„œμ„œ κΈ°λ‹€λ¦¬λŠ” 것과 μœ μ‚¬
  • λŒ€κΈ°μ—΄μ΄λ‚˜ μž‘μ—… μŠ€μΌ€μ€„λ§ λ“±μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©
  • μ‚½μž… 및 μ‚­μ œμ— O(1), 탐색에 O(n) 의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό 가짐

큐(Queue)의 κ΅¬ν˜„

  • νλŠ” λŒ€κ°œ λ°°μ—΄μ΄λ‚˜ μ—°κ²° 리슀트λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„
  • 배열을 μ΄μš©ν•˜λŠ” 경우, front와 rearλΌλŠ” 두 개의 인덱슀 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 큐의 μ‹œμž‘κ³Ό 끝을 가리킴 
    • 데이터λ₯Ό μ‚½μž…ν•  λ•Œμ—λŠ” rear λ³€μˆ˜λ₯Ό μ¦κ°€μ‹œμΌœ μƒˆλ‘œμš΄ 데이터λ₯Ό λ§ˆμ§€λ§‰μ— μΆ”κ°€
    • 데이터λ₯Ό μΆ”μΆœν•  λ•Œμ—λŠ” front λ³€μˆ˜λ₯Ό μ¦κ°€μ‹œμΌœ κ°€μž₯ μ²˜μŒμ— μžˆλŠ” 데이터λ₯Ό μΆ”μΆœ
  • μ—°κ²° 리슀트λ₯Ό μ΄μš©ν•˜λŠ” κ²½μš°μ—λŠ”, 각 λ…Έλ“œκ°€ λ‹€μŒ λ…Έλ“œλ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό κ°€μ§€κ³  있으며, front와 rearλŠ” 각각 첫 번째 λ…Έλ“œμ™€ λ§ˆμ§€λ§‰ λ…Έλ“œλ₯Ό 가리킴

 

큐(Queue)의 μ£Όμš” λ™μž‘λ“€

  • enQueue(): 큐에 데이터λ₯Ό μ‚½μž…
  • deQueue(): νμ—μ„œ 데이터λ₯Ό μ‚­μ œ
  • isEmpty(): 큐가 λΉ„μ–΄μžˆλŠ”μ§€ 확인
  • isFull(): 큐가 꽉 μ°¨ μžˆλŠ”μ§€ 확인
  • peek(): μ•žμ— μžˆλŠ” μ›μ†Œλ₯Ό μ‚­μ œν•˜μ§€ μ•Šκ³  λ°˜ν™˜

큐(Queue)의 μ‚¬μš© 사둀

데이터가 μž…λ ₯된 μ‹œκ°„ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•  ν•„μš”κ°€ μžˆλŠ” 상황에 μ΄μš©ν•œλ‹€.

  • λ„ˆλΉ„ μš°μ„  탐색(BFS, Breadth-First Search) κ΅¬ν˜„
    • μ²˜λ¦¬ν•΄μ•Ό ν•  λ…Έλ“œμ˜ 리슀트λ₯Ό μ €μž₯ν•˜λŠ” μš©λ„λ‘œ 큐(Queue)λ₯Ό μ‚¬μš©
    • λ…Έλ“œλ₯Ό ν•˜λ‚˜ μ²˜λ¦¬ν•  λ•Œλ§ˆλ‹€ ν•΄λ‹Ή λ…Έλ“œμ™€ μΈμ ‘ν•œ λ…Έλ“œλ“€μ„ 큐에 λ‹€μ‹œ μ €μž₯
    • λ…Έλ“œλ₯Ό μ ‘κ·Όν•œ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•  수 있음
  • μΊμ‹œ(Cache) κ΅¬ν˜„
  • μš°μ„ μˆœμœ„κ°€ κ°™μ€ μž‘μ—… μ˜ˆμ•½ (인쇄 λŒ€κΈ°μ—΄)
  • μ„ μž…μ„ μΆœμ΄ ν•„μš”ν•œ λŒ€κΈ°μ—΄ (ν‹°μΌ“ μΉ΄μš΄ν„°)
  • μ½œμ„Όν„° κ³ κ° λŒ€κΈ°μ‹œκ°„
  • ν”„λ¦°ν„°μ˜ μΆœλ ₯ μ²˜λ¦¬
  • μœˆλ„ μ‹œμŠ€ν…œμ˜ λ©”μ‹œμ§€ μ²˜λ¦¬κΈ°
  • ν”„λ‘œμ„ΈμŠ€ 관리

데크(Deque)

  • Double-ended Queue
  • μ–‘μͺ½ λμ—μ„œ μ‚½μž…κ³Ό μ‚­μ œκ°€ λͺ¨λ‘ κ°€λŠ₯ν•œ 자료ꡬ쑰
  • 큐λ₯Ό μΌλ°˜ν™”ν•œ ν˜•νƒœμ˜ 좔상 μžλ£Œν˜•(ADT)
λ°˜μ‘ν˜•