ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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가 있습니다.

Designed by Tistory.