공부/자료구조

큐(Queue)란?

셩잇님 2023. 3. 30. 17:23
반응형

 

 

1. 큐(Queue)란?

큐는 요소를 선입선출(FIFO) 방식으로 저장하는 데이터 구조의 한 유형입니다. 즉, 큐에 가장 먼저 추가된 요소가 가장 먼저 제거됩니다. 큐는 일반적으로 작업 스케줄링이나 메시지 전달 시스템과 같이 요소를 수신한 순서대로 처리해야 하는 상황에서 사용됩니다.

 

2. 큐(Queue)에서 사용되는 작업
1. 큐에 추가(Enqueue): 이 작업은 요소를 큐의 끝에 추가합니다.
2. 큐에 해제(Dequeue): 이 작업은 큐의 맨 앞에 있는 요소를 제거합니다.
3. Peek: 이 작업은 큐의 앞쪽에 있는 요소를 제거하지 않고 반환합니다.
4. IsEmpty: 이 작업은 큐가 비어 있는지 확인합니다.
5. Size: 이 작업은 큐에 있는 요소의 수를 반환합니다.

 

3. 큐(Queue)의 구현
큐는 배열(Array) 또는 링크드 리스트(Linked-List)을 사용하여 구현할 수 있습니다.

 

배열(Array) 기반 구현에서는 고정 크기 배열을 사용하여 큐의 요소를 저장합니다. 큐의 앞쪽과 뒤쪽은 두 개의 포인터로 표시되며, 큐에 넣기 및 큐에서 제외하기 작업은 포인터와 배열을 업데이트하여 수행됩니다.
링크드 리스트(Linked-List) 기반 구현에서 큐의 요소는 링크된 목록의 노드로 저장됩니다. 큐의 앞쪽은 첫 번째 노드에 대한 포인터로 표시되고 큐의 뒤쪽은 마지막 노드에 대한 포인터로 표시됩니다. 큐에 넣기 및 큐에서 제외하기 작업은 연결된 목록의 적절한 끝에서 노드를 추가하거나 제거하여 수행됩니다.

 

4. 큐(Queue)의 종류
순환 큐: 순환 큐는 마지막 요소가 첫 번째 요소에 연결되어 원을 형성하는 큐의 변형입니다. 이렇게 하면 큐에 대기열에 추가된 요소가 남긴 빈 공간을 큐에서 재사용할 수 있습니다.
우선순위 큐: 우선순위 큐는 각 요소에 우선순위가 할당되고 우선순위가 높은 요소가 먼저 큐에서 해제되는 큐의 변형된 형태입니다.

5. 게임 개발에서의 큐(Queue)의 활용
게임 개발에서 큐는 일반적으로 다양한 작업과 이벤트를 관리하기 위해 사용됩니다. 예를 들어 게임 엔진은 플레이어 입력, 게임 로직 업데이트, 렌더링 작업과 같은 게임 이벤트를 관리하기 위해 큐를 사용하는 경우가 많습니다. 큐는 이러한 이벤트가 발생하는 대로 저장하는 데 사용할 수 있으며, 이벤트가 수신된 순서대로 처리할 수 있습니다. 이를 통해 게임 로직이 원활하게 실행되고 플레이어의 동작이 적시에 일관된 방식으로 처리되도록 보장할 수 있습니다.

또한 게임 개발자는 우선순위 큐를 사용하여 우선순위가 다른 이벤트를 관리할 수 있습니다. 예를 들어, 게임에서 원활하고 반응이 빠른 게임플레이 환경을 유지하기 위해 렌더링 작업보다 플레이어 입력 이벤트의 우선순위를 지정할 수 있습니다.

큐는 오브젝트 풀링과 같은 게임 리소스를 관리하는 데에도 사용할 수 있습니다. 오브젝트 풀링은 게임 오브젝트를 반복적으로 생성 및 소멸하지 않고 재사용하여 성능을 개선하는 데 사용되는 기술입니다. 큐는 사용하지 않는 게임 오브젝트를 저장하는 데 사용할 수 있으며, 필요할 때 큐에서 해당 오브젝트를 검색할 수 있습니다.

 

6. 결론

요약하면, 큐는 선입선출 방식으로 요소를 저장하는 간단하고 효율적인 데이터 구조입니다. 일반적으로 요소를 수신한 순서대로 처리해야 하는 상황에서 사용되며 배열이나 연결된 목록을 사용하여 구현할 수 있습니다. 또한 게임 개발에서 이벤트, 리소스, 작업을 관리하는 데 유용한 데이터 구조입니다. 게임 로직이 원활하게 실행되고 플레이어가 일관되고 즐거운 게임플레이 경험을 할 수 있도록 도와줍니다.

 

 

 

반응형