| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- c#
- git
- Data Structure
- System Programming
- Online Judge
- BOJ
- Unity
- 독서
- Network Programming
- Toy Project
- multi-thread
- PS
- C++
- Today
- Total
I'm FanJae.
[20260514] C# ( Queue<T> ) 본문
1) 정의
- Queue는 FIFO(First in First Out) 구조를 사용하는 자료구조이다.
- 즉, 먼저 들어온 데이터가 먼저 나온다.
- 이런 구조로 되어 있어서 하나 씩 쌓여 있다고 생각하면 된다.

2) 필요한 이유
- Queue는 먼저 들어온 작업부터 처리해야 하는 상황에서 자주 사용된다.
2-1) 예시
- 이벤트의 처리
- 서버 요청 처리
- 턴 순서 처리
- 작업 대기열
※ 즉, 순서 보장이 중요한 상황에서 주로 사용된다.
3) 주요 동작
※ 사진에서는 편하게 들기 위해(그리기가 편리하여) 일반적인 형태의 Queue를 사용하였다. 하지만 C#의 Queue<T>는 단방향 형태의 Queue가 아닌 원형 큐(Circular Queue) 형태로 구현되어 있다.
3-1) Enqueue()
- Queue의 뒤쪽, 즉 rear 또는 back 위치에 데이터를 추가한다.
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);

3-2) Dequeue()
- Queue의 앞쪽, 즉 front 위치에 있는 데이터를 제거하고 반환한다.
int value = queue.Dequeue();
Console.WriteLine(value);

3-3) Peek()
- Queue의 front 위치에 있는 데이터를 제거하지 않고 확인만 한다.
int value = queue.Peek();
Console.WriteLine(value); // 출력 : 2

3-4) Contains()
- Queue 안에 특정 데이터가 존재하는지 확인한다.
bool result = queue.Contains(3);
Console.WriteLine(result); // 출력 : True
3-5) Count
- 현재 Queue에 들어 있는 데이터 개수를 반환한다. (Property)
Console.WriteLine(queue.Count); // 출력 : 2
3-6) Clear()
- Queue에 들어 있는 모든 데이터를 제거한다.
queue.Clear();
Console.WriteLine(queue.Count); // 출력 : 0
4) Queue 사용 시 주의점
4-1) Dequeue(), Peek() 주의점
- Queue가 비어 있을 때 호출하면 InvalidOperationException이 발생한다.
Queue<int> queue = new Queue<int>();
queue.Dequeue(); // InvalidOperationException 발생
- 그래서 안전하게 처리하려면 Count를 확인하거나 TryDequeue(), TryPeek()를 사용할 수 있다.
if (queue.Count > 0) int value = queue.Dequeue();
4-2) TryDequeue(), TryPeek()
- C#에서는 이러한 예외를 피하기 위해서 TryDequeue()나 TryPeek()를 사용하기도 한다.
Queue<int> queue = new Queue<int>();
if (queue.TryPop(out int value))
{
Console.WriteLine(value);
}
else
{
Console.WriteLine("Queue가 비어 있습니다.");
}
if (queue.TryPeek(out int front))
{
Console.WriteLine(front);
}
- 이전에도 다뤘던 Try 문구가 들어간 애들이 대부분 그렇듯 실패하면 예외가 아닌 False를 반환한다.
5) 정리
- Queue는 FIFO(First in First Out) 구조를 따르는 자료구조이다.
- 즉, 먼저 들어온 데이터가 먼저 나간다.
- C#에서는 Stack<T>를 사용해 Queue 자료구조를 쉽게 다룰 수 있다.
- 다만, Dequeue()과 Peek()는 Queue가 비어 있을 때 호출 하면 예외가 발생한다. 사용 전에 Count를 확인하거나, TryDequeue(), TryPeek()를 사용하는 것이 좋다.
'Unity > Unity 초격차캠프' 카테고리의 다른 글
| [20260515] C# ( Delegate, 대리자 ) (0) | 2026.05.15 |
|---|---|
| [20260514] C# ( HashSet<T> ) (0) | 2026.05.14 |
| [20260514] C# ( Stack<T> ) (0) | 2026.05.14 |
| [20260513] C# ( Hash 기반 자료구조의 주의점과 이를 해결하는 기법) (0) | 2026.05.13 |
| [20260513] C# ( HashTable 와 Dictionary의 공통점, 차이점 ) (0) | 2026.05.13 |