[자료구조] 56. Queue

Connected Brain·2025년 5월 16일

면접 질문 대비

목록 보기
56/60

Queue의 특성을 설명해주세요.

Queue

  • Stack과 유사하지만 후입 선출인 Stack과 달리 선입 선출인 특성을 가짐
Queue<string> numbers = new Queue<string>();
numbers.Enqueue("one");
numbers.Dequeue();
  • Enqueue()를 통해 데이터를 추가하고, Dequeue()를 통해 데이터를 꺼내서 읽을 수 있다.
  • Stack과 동일하게 Dequeue()를 통해 가장 먼저 추가한 데이터에 접근함과 동시에 Queue에서 제거한다.

장단점

  • Stack과 동일한 장단점을 가진다. 크기에 관계없이 데이터 추가 및 삭제 그리고 접근이 가능하나 내부 요소를 검색하거나 수정하는 것은 비효율적이다.
  • 먼저 등록된 요소부터 처리해야하는 경우에 사용하기에 적합하다.

프로젝트에서의 활용

  • 자주 데이터 추가 및 처리가 이루어질 때 사용하기에 유리하다고 판단하여 카드게임 개발에서 손패에 Queue를 활용하였다.
  • 손패는 덱에서 자주 카드가 추가되고, 하나의 카드를 사용했을 때 나머지 카드가 전부 버리는 카드 더미로 이동하는 구조이다.
  • 카드는 각각의 객체로 카드의 효과 등은 각각의 카드에 구현되어 있기에 특정 카드를 사용할 때 손패 자체에 접근하여 요소를 검색해야하는 일은 발생하지 않는다.
  • 따라서 덱, 손패,버리는 더미를 모두 Queue로 만들고 덱에서 Dequeue()한 카드를 손패에 Enqueue()하고 카드 사용시 손패 전부를 Dequeue()하여 버리는 더미에 Enqueue()하여 Queue의 장점을 활용할 수 있었다.

0개의 댓글