Stack은 자료를 적층구조로 쌓는 모양
가장 먼저 들어간 자료가 가장 늦게 나오는 구조
선입후출 , 후입 선출 First in Last Out , Last in First Out
FIFO , LIFO
분야
웹브라우저 뒤로가기
턴제게임 턴 무르기
트레이서 시간역행
Ctrl + Z
Stack<char> keyInputs = new Stack<char>();
// 무한으로 키를 입력 받다가, 0 이 입력되면 멈추고, 여태 입력한 키를 역순 출력
keyInputs.Push('a'); // 집어 넣을때 사용
keyInputs.Push('s');
keyInputs.Push('d');
keyInputs.Push('f');
var poped = keyInputs.Pop(); // 가장 위에 있는 요소를 반환과 동시에 터트려서 없앤다
var peek = keyInputs.Peek(); // 가장 위에 있는 요소를 보기만 하고 터트리지 않는다
Push, Pop, Peek, Any
Any: 요소가 하나라도 존재하면 참을 반환
Push : 스택에 새로운 데이터 넣기 ( 맨 위에 추가 )
Pop : 스택의 맨 위 데이터를 꺼내는 것 ( 꺼내면서 스택에서 제거됨 )
Peek : 스택의 맨 위 데이터를 확인만 함 ( 꺼내지 않고 값만 보여줌 )
Any : 스택에 데이터가 있는지 확인
static void Main(string[] args)
{
// Stack 마지막 핵심 요소
// Push , Pop , Peek , Any
Stack<char> keyInputs = new Stack<char>();
while (true)
{
var keyInput = Console.ReadKey(true); // true를 넣으면 입력한 키가 보이지 않음
if (keyInput.KeyChar == 13) //아스키 표에서 13은 Enter 를 의미 ((int)ConsoleKey.Enter)
{
break;
}
else
{
keyInputs.Push(keyInput.KeyChar);
}
}
Console.WriteLine("-------------");
while (keyInputs.Any())
{
Console.Write(keyInputs.Pop());
}
}
static void Main(string[] args)
{
// Stack
// Push, Pop, Peek, Any
// Queue
// Enqueue, Dequeue, Peek, Any
Queue<char> keyInputs = new Queue<char>();
keyInputs.Enqueue('a');
keyInputs.Enqueue('b');
keyInputs.Enqueue('c');
keyInputs.Enqueue('d');
while (keyInputs.Any())
{
var a = keyInputs.Dequeue();
Console.WriteLine(a);
}
}
Dictionary
// 사전
// 검색하기 위한 키워드, 키워드를 통한 내용
// List 의 경우에는 인덱스를 통해 값을 찾아온다
// Dictionary 는 검색하고자 하는 키워드를 주면 해당하는 값을 찾아오는 구조
// Key : 열쇠로 쓰일 키워드를 보고 Key 라고 부른다
// Value : 진짜 위 열쇠를 통해 가지고 온 값
Dictionary<string, int> itemAmount = new Dictionary<string, int>();
// 아이템 이름을 문자열 키값으로 주면 아이템 갯수를 반환하라는 자료구조
itemAmount.Add("바주카포", 12); // 키와 값을 세트로
itemAmount.Add("홀리수류탄", 18);
itemAmount.Add("콘크리트 당나귀", 22);
Console.WriteLine(itemAmount["바주카포"]); // 키 값으로 꺼내오기
// 키 값으로는 정수형을, 기억시키고자 하는 값은 string
Dictionary<int, string> itemByNum = new Dictionary<int, string>();
itemByNum.Add(1, "물약");
itemByNum.Add(2, "신호탄");
itemByNum.Add(3, "고급회복물약");
if (itemByNum.ContainsKey(2) == false)
{
itemByNum.Add(2, "신호탄");
}
itemByNum[1] = "덮어 씌울수 있다"; // 덮어씌울수 있음
Console.WriteLine(itemByNum[1]);
'📖TIL' 카테고리의 다른 글
| 250925 Revision (0) | 2025.09.25 |
|---|---|
| 250924 딕셔너리 (0) | 2025.09.24 |
| 250924 (0) | 2025.09.24 |
| 인덱서 (0) | 2025.09.23 |
| 인덱서 (0) | 2025.09.23 |