Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 스택(Stack) 클래스의 Push와 Pop 연산 완벽 가이드

C#의 Stack 클래스LIFO(Last-In, First-Out, 후입선출) 방식으로 객체를 저장하는 컬렉션입니다. 즉, 가장 나중에 추가된 요소가 가장 먼저 제거되는 구조로, 데이터를 역순으로 처리해야 하는 상황에서 유용하게 사용됩니다.

Stack 클래스에서 자주 사용하는 대표적인 속성은 다음과 같습니다.

  • Count – 스택에 현재 포함된 요소의 개수를 반환합니다.

Push 연산이란?

Push는 스택의 맨 위(top)에 새로운 요소를 추가하는 연산입니다. Push() 메서드를 사용하면 다음과 같이 요소를 순서대로 쌓을 수 있습니다.

Stack st = new Stack();

st.Push('A');
st.Push('B');
st.Push('C');
st.Push('D');

위 코드가 실행되면 'A'부터 'D'까지 차례대로 스택에 쌓이며, 이때 스택의 최상위 요소는 마지막에 추가된 'D'가 됩니다.

Pop 연산이란?

Pop은 스택의 맨 위에 있는 요소를 제거하면서 반환하는 연산입니다. 후입선출 구조 특성상 가장 최근에 Push된 요소부터 제거됩니다.

또한, 요소를 제거하지 않고 맨 위의 값만 확인하고 싶다면 Peek() 메서드를 활용할 수 있습니다.

Push와 Pop 실전 예제

아래 예제는 Stack 클래스의 Push(), Pop(), Peek() 메서드를 함께 사용하여 스택의 동작 원리를 보여줍니다.

using System;
using System.Collections;

namespace CollectionsApplication {
    class Program {
        static void Main(string[] args) {
            Stack st = new Stack();

            st.Push('A');
            st.Push('B');
            st.Push('C');
            st.Push('D');

            Console.WriteLine("Current stack: ");
            foreach (char c in st) {
                Console.Write(c + " ");
            }
            Console.WriteLine();

            st.Push('P');
            st.Push('Q');
            Console.WriteLine("The next poppable value in stack: {0}", st.Peek());
            Console.WriteLine("Current stack: ");

            foreach (char c in st) {
                Console.Write(c + " ");
            }

            Console.WriteLine();
            Console.WriteLine("Removing values....");
            st.Pop();
            st.Pop();
            st.Pop();
            Console.WriteLine("Current stack: ");
            foreach (char c in st) {
                Console.Write(c + " ");
            }
        }
    }
}

실행 결과 분석

1. 처음에 'A', 'B', 'C', 'D'를 Push하면 출력 결과는 D C B A 순서로 표시됩니다. 스택은 후입선출 구조이므로 열거 시에도 맨 위 요소부터 반환됩니다.

2. 이후 'P'와 'Q'를 추가로 Push한 뒤 Peek()를 호출하면, 다음에 Pop될 값인 Q가 출력됩니다.

3. Pop()을 세 번 호출하면 'Q', 'P', 'D'가 차례대로 제거되고, 남은 스택은 C B A가 됩니다.

정리

Stack 클래스는 Push로 데이터를 쌓고, Pop으로 꺼내는 단순하지만 강력한 LIFO 컬렉션입니다. 실행 취소(Undo) 기능, 재귀 호출 관리, 괄호 검사 등 다양한 알고리즘 문제 해결에 널리 활용되므로, Push와 Pop의 동작 원리를 정확히 이해해 두는 것이 좋습니다.