Guidelines

λ¨Όμ € λ“€μ–΄κ°„ 데이터가 λ¨Όμ € λ‚˜μ˜€λŠ” '큐(Queue)'

큐(Queue)λŠ” 일상 μƒν™œμ—μ„œ 쀄을 μ„œλŠ” 것과 μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λ©°, λ¨Όμ € λ“€μ–΄κ°„ 데이터가 λ¨Όμ € λ‚˜μ˜€λŠ” 'μ„ μž…μ„ μΆœ'(First In First Out, FIFO) ꡬ쑰λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

νλŠ” ν”„λ¦°ν„°μ˜ μž‘μ—… λŒ€κΈ°μ—΄, νƒœμŠ€ν¬ μŠ€μΌ€μ₯΄λ§ λ“± λ‹€μ–‘ν•œ 상황에 ν™œμš©λ©λ‹ˆλ‹€.


큐의 μ£Όμš” μ—°μ‚°

큐(Queue)λŠ” μ„ μž…μ„ μΆœ(FIFO, First In First Out) 원리에 κΈ°λ°˜ν•œ 자료 ꡬ쑰둜, μ£Όμš” 연산은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. Enqueue: 큐에 μš”μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” μ—°μ‚°μž…λ‹ˆλ‹€. 이 연산은 큐의 λ’€μͺ½(tail)에 μƒˆ μš”μ†Œλ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€. 큐에 μš”μ†Œκ°€ 좔가될 λ•Œ, 이 μš”μ†ŒλŠ” 큐의 λ§ˆμ§€λ§‰ μœ„μΉ˜μ— λ“€μ–΄κ°‘λ‹ˆλ‹€.

  2. Dequeue: νμ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜λŠ” μ—°μ‚°μž…λ‹ˆλ‹€. 이 연산은 큐의 μ•žμͺ½(head)μ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³ , 제거된 μš”μ†Œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. νμ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜λ©΄, κ·Έ λ‹€μŒ μš”μ†Œκ°€ 큐의 μƒˆλ‘œμš΄ μ•žμͺ½μ΄ λ©λ‹ˆλ‹€.

  3. Peek λ˜λŠ” Front: 큐의 μ•žμͺ½μ— μžˆλŠ” μš”μ†Œλ₯Ό μ‘°νšŒν•˜λŠ” μ—°μ‚°μž…λ‹ˆλ‹€. 이 연산은 큐의 맨 μ•žμ— μžˆλŠ” μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, ν•΄λ‹Ή μš”μ†Œλ₯Ό νμ—μ„œ μ œκ±°ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

  4. IsEmpty: 큐가 λΉ„μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” μ—°μ‚°μž…λ‹ˆλ‹€. 큐에 μš”μ†Œκ°€ μ—†μœΌλ©΄ Trueλ₯Ό, 그렇지 μ•ŠμœΌλ©΄ Falseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.


큐 κ΅¬ν˜„ μ˜ˆμ‹œ

νŒŒμ΄μ¬μ—μ„œλŠ” 리슀트(list)둜 κ°„λ‹¨ν•œ 큐λ₯Ό κ΅¬ν˜„ν•  수 있으며, 효율적인 큐 κ΅¬ν˜„μ„ μœ„ν•΄ collections λͺ¨λ“ˆ(μ—°κ΄€λœ μ™ΈλΆ€ μ½”λ“œμ˜ λͺ¨μŒ)의 deque 클래슀λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

dequeλŠ” μ–‘μͺ½ λμ—μ„œ 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  수 μžˆλŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.

큐 κ΅¬ν˜„ μ˜ˆμ‹œ
from collections import deque # 큐 생성 queue = deque() # Enqueue μ—°μ‚° queue.append('A') # A μΆ”κ°€ queue.append('B') # B μΆ”κ°€ # Dequeue μ—°μ‚° print(queue.popleft()) # 'A' 좜λ ₯ 및 제거 print(queue.popleft()) # 'B' 좜λ ₯ 및 제거

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result