Learning
When: 1학년 7월 29일
How:
심화반 영상에 Queue 자료형이 나왔는데 '이것이 C#이다'라는 책에서 본 적이 있기는 하지만 기억이
가물가물해서 인터넷에 검색을 해보았습니다. 인터넷에 검색해보니 자료형이자 동시에
자료 구조이기도 한 키워드 인 것을 알아서 2개를 공부해 보았는데, 2개라곤 해도 Stack을
이미 알고 계신다면 정말 빠르게 이해할 수 있고, 몰라도 2개가 같은 개념이기 때문에
이해하기 쉬울 것 같아 2개를 동시에 다루게 되었습니다.
Understanding:
- 정의 : 서로 거의 비슷해서 여기선 2개를 같이 설명할 것인데, 기본적인 설명을 하자면
Stack의 반대라고 생각하시면 됩니다. Stack은 LIFO(Last In First Out)으로,
가장 먼저 들어온 데이터가 나중에 나가는 구조입니다. Queue는 그것과 반대로
FIFO(First In First Out), 가장 먼저 들어온 데이터가 가장 먼저 나가는 구조입니다.
Stack은 재귀 호출을 할 때 생기는 재귀 스택이나 크롬에서 뒤로 가기를 했을 때
뒤로 가는 것 처럼 '뒤로 가기'에 최적화된 구조인 것에 비해 Queue는 줄을 세우는 것에
중점을 둔 구조입니다. 예를 들면 스킬 3개를 순서대로 빠르게 눌렀을 때, 누른 순서대로
스킬을 발생시키는 곳에 쓰이는 등 예약, 줄 세우기를 키워드로 기억하고 계시면 기억에도 오래 남고
이해하기도 쉬울 것이라 생각합니다.
Queue 자료형은 C#에서 Queue<int> 이렇게 스택처럼 인스턴스를 만들어 변수에 할당하고
값을 집어넣어 먼저 들어간 값 순서대로 꺼낼 때 사용하는 것이고, Queue 자료 구조는
방금 말한 규칙대로 데이터를 저장하는 규칙입니다.
자료 구조를 통해 자료형이 만들어졌다고 생각하셔도 됩니다. - 사용법 : 아래는 Queue 자료형을 이용하여 순서대로 공격을 하는 코드입니다.
Queue<string>, new Queue<string>() 으로 Queue 인스턴스를 만들어 변수에 할당해 주고,
Enqueue() 메서드를 이용하면 값을 넣을 수 있는데 Stack의 Push 메서드와 비슷합니다.
Stack의 Pop 메서드와 유사한 Dequeue() 메서드로 값을 빼내면, 먼저 넣은 값이 반환되어
아래처럼 출력이 됩니다.
Queue<string> attack = new Queue<string>();
attack.Enqueue("찌르기");
attack.Enqueue("올려 베기");
attack.Enqueue("회전 베기");
int count = attack.Count;
for (int i = 0; i < count; i++)
{
Console.WriteLine(attack.Dequeue());
}
//출력 :
//찌르기
//올려 베기
//회전 베기
Result: 이렇게 Stack과 비슷하지만 사용 용도나 메서드는 다르기 때문에 헷갈리지 않는 것이
중요할 것 같습니다.
'C#' 카테고리의 다른 글
| [C#] IndexOutOfRangeException과 ArgumentOutOfRange 에러의 차이 (1) | 2025.08.04 |
|---|---|
| [C#] 스프라이트 라이브러리(Sprite Library), Sprite Resolver (2) | 2025.07.30 |
| [C#] 구조체 (struct) (7) | 2025.07.28 |
| [C#] var 키워드 (0) | 2025.07.27 |
| [C#] 흐름 제어 키워드 (0) | 2025.07.26 |