최대 1 분 소요

stack

자료의 삽입과 삭제에 대한 규칙이 있는 자료구조 이며,
‘큐’의 경우, 가장 먼저 ‘삽입(enQueue) 된 데이터가,
제일 먼저 삭제(deQueue) 된다
(선입선출, FIFO 등으로도 표현된다)
(‘은행 대기열’ 등으로 비유되기도)

스택처럼 ‘중간’의 데이터에 접근할 수 없다는 점에 유의!

큐 자료구조의 시간 복잡도

삽입 (enQueue)
O(1)
스택처럼 뒤에 놓으면 끝!
삭제 (deQueue)
O(n)
(일반적인 배열로 구현한 경우)
지운 후, 나머지 요소를 앞으로 당겨야 하므로

O(1)
(원형 버퍼로 구현한 경우)
이를 ‘원형 큐’라고 하며,
가장 앞(deQueue할 요소)을 가리키는 포인터 (front) 와
가장 뒤쪽(enQueue할 위치)을 가리키는 포인터 (back) 를 사용하여
(C 적인 의미가 아니라 인덱스를 가리킨다는 의미의)
삽입, 삭제, isEmpty, isFull 등을 처리하는 방식이다.

검색
O(N)
-> 스택 처럼 모두 제거(deQueue)하여 확인 한 후,
다시 넣어(enQueue) 준다
(모든 요소를 제거했다가,
다시 집어넣으므로 정확히는 O(2N))

큐 자료구조의 주 용도

  • ‘대기줄’이 필요한 경우라면 적용이 가능! (데이터 유입 속도가 데이터의 소모 속도 보다 빠른 경우) (ex : 데이터 제공자 보다 데이터를 소비하는 이가 더 많다던가)
  • 각종 ‘버퍼’의 개념 (‘입출력 버퍼’) (ex : 게임에서의 콤보 입력(선입력) 등)

댓글남기기