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

C#에서 스택(Stack)을 뒤집는 방법 – Push와 Pop 메서드 활용하기

C#의 Stack 클래스는 LIFO(Last In First Out) 구조로 동작하는 컬렉션입니다. 이 글에서는 하나의 스택에 저장된 요소들의 순서를 반대로 뒤집는 방법을 알아보겠습니다.

1. 스택 생성 및 요소 추가

먼저 스택을 만들고 Push() 메서드를 사용해 요소를 추가합니다.

Stack st = new Stack();
st.Push('P');
st.Push('Q');
st.Push('R');

이 시점에서 스택에는 P, Q, R이 순서대로 들어가 있으며, 가장 마지막에 넣은 R이 맨 위(top)에 위치하게 됩니다.

2. 새로운 스택으로 순서 뒤집기

요소의 순서를 반전시키기 위해 또 다른 빈 스택을 준비합니다.

Stack rev = new Stack();

그다음 원본 스택의 개수(Count)가 0이 될 때까지 Pop()으로 요소를 꺼내고, 그 값을 새 스택에 Push()로 넣어주면 됩니다.

while (st.Count != 0) {
    rev.Push(st.Pop());
}

스택은 LIFO 구조이므로, 기존 스택에서 꺼낸 순서(위에서부터)대로 새 스택에 쌓이면 결과적으로 전체 순서가 반전됩니다.

3. 전체 예제 코드

아래는 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.

using System;
using System.Collections;

namespace CollectionsApplication {
    public class Program {
        public static void Main(string[] args) {
            Stack st = new Stack();
            Stack rev = new Stack();
            st.Push('P');
            st.Push('Q');
            st.Push('R');
            Console.WriteLine("Current stack: ");
            foreach(char c in st) {
                Console.Write(c + " ");
            }
            Console.WriteLine();
            while (st.Count != 0) {
                rev.Push(st.Pop());
            }
            Console.WriteLine("Reversed stack: ");
            foreach(char c in rev) {
                Console.Write(c + " ");
            }
        }
    }
}

4. 실행 결과

Current stack:
R Q P
Reversed stack:
P Q R

정리

이 예제에서 확인할 수 있듯이, 원래 스택에는 R Q P 순서로 출력되지만, Pop과 Push를 반복해 새 스택에 옮긴 후에는 P Q R 순서로 뒤집힌 것을 볼 수 있습니다. 이처럼 보조 스택 하나만 있으면 별도의 정렬 로직 없이 간단히 스택의 요소 순서를 반전시킬 수 있습니다.