Stack<T> 은 자료구조 중에서 가장 마지막에 넣은 데이터를 가장 먼저 꺼내는 스택을 기반으로 한다.
후입선출 ( Last-in , First-Out, LIFO ) 방식의 컬렉션이다.
📌 기본 선언 방법
스택은 System.Collections.Generic 네임스페이스에 있는 제네릭 클래스이다.
using System.Collections.Generic;
Stack<string> stack = new Stack<string>();
Stack<int> : int형만 담을 수 있는 스택
Stack<string> : string형만 담을 수 있는 스택
Stack<MyClass> : 사용자 정의 클래스 객체도 담을수 있다
int[] numbers = { 1, 2, 3, 4, 5 };
Stack<int> stack = new Stack<int>(numbers);
초기값으로 배열이나 리스트를 넣을수 있다.
이 경우 가장 마지막에 담은 요소가 스택의 Top 이 된다.
Stack<int> stack = new Stack<int>(100);
스택을 만들 때 미리 용량 ( capacity ) 을 지정할수 있다.
요소 추가하기
Push()
스택의 맨 위 ( Top ) 에 데이터를 추가
Stack<int> stack = new Stack<int>();
stack.Push(10);
stack.Push(20);
stack.Push(30); // Top
// 스택: [10, 20, 30]
요소 확인하기
1. Pop()
스택의 맨 위 ( Top ) 데이터를 꺼내면서 제거한다
스택이 비어있으면 예외 발생 ( InvalidOperationException )
string top = stack.Pop();
2. Peek()
맨 위 ( Top ) 데이터를 확인만 하고 제거하지 않는다.
비어 있으면 예외 발생
string top = stack.Peek();
3. Count ( 프로퍼티 )
스택 안에 들어있는 요소 개수 확인
int count = stack.Count;
Console.WriteLine(stack.Count);
4. Clear()
스택에 들어있는 모든 요소를 제거한다
stack.Clear();
Console.WriteLine(stack.Count); // 출력: 0
스택을 쓰기 좋은 상황
1. 되돌리기 ( Undo ) / 되감기 ( Redo ) 기능
2. 재귀 호출 ( Recursion )
3. 웹 브라우저 뒤로 가기
4. 탐색 알고리즘 ( DFS , 깊이 우선 탐색 )
5. 수식 계산
정리
마지막에 들어간 데이터가 먼저 나오는 구조이다.
스택은 최근에 한 작업을 먼저 처리해야 하는 상황에 강력하다.
참고 자료
https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.stack-1?view=net-8.0
'⭐C Sharp > 15-4. 스택과 큐' 카테고리의 다른 글
| 큐 ( Queue<T> ) (0) | 2025.09.26 |
|---|