C#에서 Stack<T> 클래스는 LIFO(Last In First Out, 후입선출) 방식으로 동작하는 컬렉션입니다. 스택의 맨 위에 새로운 개체를 삽입하려면 Push() 메서드를 사용합니다.
Push() 메서드란?
Push() 메서드는 지정된 개체를 스택의 맨 위(top)에 추가하며, 매개변수로 삽입할 값을 전달받습니다. 반대로 스택 맨 위의 요소를 제거하고 반환할 때는 Pop() 메서드를 사용합니다.
예제 1: 정수형 스택에 요소 삽입
다음 예제는 정수를 저장하는 스택을 생성한 뒤, Push() 메서드로 여러 개의 값을 삽입하고 그 결과를 확인하는 코드입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<int> stack = new Stack<int>();
stack.Push(100);
stack.Push(150);
stack.Push(175);
stack.Push(200);
stack.Push(225);
stack.Push(250);
Console.WriteLine("스택의 요소들:");
foreach(var val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("스택의 요소 개수 = " + stack.Count);
Console.WriteLine("스택에 400이 포함되어 있는가? = " + stack.Contains(400));
// 새로운 요소 추가
stack.Push(300);
stack.Push(400);
stack.Push(450);
stack.Push(500);
Console.WriteLine("스택의 요소들... (업데이트됨)");
foreach(var val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("스택의 요소 개수 (업데이트됨) = " + stack.Count);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
스택의 요소들: 250 225 200 175 150 100 스택의 요소 개수 = 6 스택에 400이 포함되어 있는가? = False 스택의 요소들... (업데이트됨) 500 450 400 300 250 225 200 175 150 100 스택의 요소 개수 (업데이트됨) = 10
결과 분석
- 가장 마지막에 Push된 값(250)이 출력 시 가장 먼저 나타나며, 이는 스택의 LIFO 특성을 보여줍니다.
- Contains(400) 호출 시점에는 아직 400이 삽입되지 않았기 때문에 False가 반환됩니다.
- 추가로 4개의 요소를 Push한 후 Count가 6에서 10으로 증가했습니다.
예제 2: 문자열 스택에 요소 삽입
이번에는 문자열 타입의 스택에 요소를 삽입하는 또 다른 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<string> stack = new Stack<string>();
stack.Push("A");
stack.Push("B");
stack.Push("C");
stack.Push("D");
stack.Push("E");
stack.Push("F");
stack.Push("G");
stack.Push("H");
Console.WriteLine("요소 개수 = " + stack.Count);
Console.WriteLine("스택의 요소들...");
foreach (string res in stack) {
Console.WriteLine(res);
}
// 새 요소 'M' 추가
stack.Push("M");
Console.WriteLine("스택의 요소들... (업데이트됨)");
foreach(var val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("스택의 요소 개수 (업데이트됨) = " + stack.Count);
}
}실행 결과
요소 개수 = 8 스택의 요소들... H G F E D C B A 스택의 요소들... (업데이트됨) M H G F E D C B A 스택의 요소 개수 (업데이트됨) = 9
정리
C#의 Stack<T>에서 요소를 맨 위에 삽입할 때는 Push() 메서드를 사용합니다. 주요 특징은 다음과 같습니다.
- LIFO 구조: 나중에 삽입된 요소일수록 먼저 처리됩니다.
- Count 속성: 스택에 현재 저장된 요소의 개수를 확인할 수 있습니다.
- Contains() 메서드: 특정 요소의 존재 여부를 O(n) 시간에 검사합니다.
- foreach 순회: 스택은 IEnumerable을 구현하므로 foreach 문으로 맨 위부터 차례대로 순회할 수 있습니다.