-
Queue의 특성과 활용카테고리 없음 2024. 7. 12. 21:05
유니티 게임개발캠프 TIL 56일차
Queue의 특성
- 선입선출(FIFO): Queue는 선입선출(FIFO, First In First Out) 원칙을 따르는 자료구조입니다. 즉, 먼저 추가된 요소가 먼저 제거됩니다.
- 주요 연산: Queue의 주요 연산에는 요소를 추가하는 Enqueue, 요소를 제거하는 Dequeue, 큐가 비어있는지 확인하는 IsEmpty, 큐에 있는 요소의 개수를 반환하는 Count가 있습니다.
Queue 클래스 구현
using System; public class My_Queue<T> { private T[] data = new T[1000]; private int head = 0; private int tail = 0; public bool IsEmpty() { return head == tail; } public void Enqueue(T item) { if (tail >= data.Length) throw new InvalidOperationException("Queue is full"); data[tail++] = item; } public T Dequeue() { if (IsEmpty()) throw new InvalidOperationException("Queue is empty"); return data[head++]; } public int Count() { return tail - head; } } // 구현 확인을 위한 코드입니다. class Program { static void Main(string[] args) { Queue<int> q = new Queue<int>(); My_Queue<int> q_new = new My_Queue<int>(); for (int i = 0; i < 10; ++i) { q.Enqueue(i); q_new.Enqueue(i); } while (q.Count > 0) { Console.WriteLine($"q => {q.Dequeue()} | q_new => {q_new.Dequeue()}"); Console.WriteLine($"size of q : {q.Count} | size of q_new : {q_new.Count}"); Console.WriteLine("------------------------------------------------------"); } } }
Queue의 장단점
- 장점: Queue는 작업 스케줄링, 프린터 작업 관리, 너비 우선 탐색 등 순서대로 처리해야 하는 작업에 유리합니다.
- 단점: Queue는 중간에 있는 요소에 접근하거나 수정해야 하는 경우에는 비효율적입니다.
Queue의 활용 예시
Unity에서 적 스폰 시스템 구현:
- Unity에서 적 스폰 시스템을 구현할 때 Queue를 사용하여 적 캐릭터를 순차적으로 스폰하고 관리했습니다.
- 이를 통해 스폰 순서를 유지하며, 일정 시간 간격으로 적이 나타나도록 효과적으로 제어할 수 있었습니다.
Queue는 선입선출(FIFO) 원칙을 따르는 자료구조로, 주요 연산에는 Enqueue, Dequeue, IsEmpty, Count가 있습니다.