반응형
스택( stack )
같은 곳에서 요소의 추가(푸시)와 제거(팝)를 하는 데이터 유형
LIFO(Last In First Out, 후입선출)원칙을 따른다. 즉,가장 최근에 추가된 항목이 가장 먼저 제거된다.
스택에는 항상 마지막으로 삽입된 요소를 가리키는 위쪽 포인터가 있다.
스택 또한 c#에 Stack<T> 클래스가 구현 되어있다. 이때 T는 스택에 저장된 요소의 유형이다.
스택은 큐와 비슷한 메소드를 가진다.(처리 요소만 다를뿐, 큐에 구현된 메서드는 스택에도 있다)
스택 구현 및 메소드 사용
1. 스택 구현
Stack<int> myStack = new Stack<int>();
2.스택 삽입
myStack.Push(10);
myStack.Push(20);
myStack.Push(30);
3. 스택 제거
int topElement = myStack.Pop();
4. 스택 크기
int size = myStack.Count;
5. 스택 요소 출력
Stack<int> stack = new Stack<int>();
// Add some elements to the stack
stack.Push(1);
stack.Push(2);
stack.Push(3);
//while로 출력
while (stack.Count > 0)
{
int element = stack.Pop();
Console.WriteLine(element);
}
//foreach로 출력
foreach (int element in stack)
{
Console.WriteLine(element);
}
5-1.스택 맨 위에 있는 요소 출력
Stack<int> myStack = new Stack<int>();
myStack.Push(10);
myStack.Push(20);
myStack.Push(30);
Console.WriteLine(myStack.Peek()); // Output: 30
5-2.스택 맨 아래 요소만 출력
스택은 기본적으로 LIFO이므로 맨아래 있는 요소를 출력하는 메서드가 따로 구현되어있지 않다. 따라서 ElementAt로 변환하여 출력하여야 한다.
int bottomElement = stack.ElementAt(stack.Count - 1);
Console.WriteLine(bottomElement);
6. 스택 요소 확인
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
bool contains = stack.Contains(2); // return True
스택 클래스를 사용해 풀수있는 백준알고리즘은 아래 링크에있다.
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
반응형
'알고리즘' 카테고리의 다른 글
큐( queue )의 구현과 메소드 사용 [C#] (0) | 2023.04.18 |
---|---|
정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현(복잡하지만 효율적 정렬) (0) | 2023.04.14 |
정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현 (0) | 2023.04.05 |
유클리드 알고리즘 정의 (0) | 2023.03.31 |
브루트 포스 알고리즘 정의 (0) | 2023.03.21 |