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

C# Stack.Pop() 메서드 완벽 가이드 – 스택 최상위 요소 제거 및 반환하기

C#에서 Stack.Pop() 메서드는 스택(Stack)의 맨 위에 있는 객체를 제거하고 그 값을 반환하는 역할을 합니다. 스택은 LIFO(Last In, First Out, 후입선출) 구조로 동작하기 때문에, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다.

만약 빈 스택에서 Pop()을 호출하면 InvalidOperationException 예외가 발생하므로, 호출 전에 Count 속성으로 스택에 요소가 있는지 확인하는 것이 안전합니다. 또한 요소를 제거하지 않고 맨 위 값만 확인하고 싶다면 Peek() 메서드를 사용하면 됩니다.

문법(Syntax)

Stack.Pop() 메서드의 기본 문법은 다음과 같습니다.

public virtual object Pop ();

예제 1 – 기본적인 Pop() 사용법

아래 예제에서는 문자열 요소를 스택에 Push한 후, Peek()로 최상위 요소를 확인하고, Pop()으로 요소를 제거·반환하는 과정을 보여줍니다.

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      Stack stack = new Stack();
      stack.Push("Inspiron");
      stack.Push("Alienware");
      stack.Push("Projectors");
      stack.Push("Monitors");
      stack.Push("XPS");
      stack.Push("Laptop");
      stack.Push("Notebook");

      Console.WriteLine("스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
      Console.WriteLine("요소 개수 = " + stack.Count);
      Console.WriteLine("최상위 요소 = " + stack.Peek());

      stack.Push("Ultrabook");
      stack.Push("Cameras");
      stack.Push("Keyboards");

      Console.WriteLine("\n업데이트된 스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
      Console.WriteLine("최상위 요소 = " + stack.Peek());
      Console.WriteLine("\n업데이트된 요소 개수 = " + stack.Count);

      Console.WriteLine("\n최상위 요소 제거 및 반환 = " + stack.Pop());
      Console.Write("업데이트된 요소 개수 = " + stack.Count);

      Console.WriteLine("\n업데이트된 스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
   }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

스택 요소...
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
요소 개수 = 7
최상위 요소 = Notebook
업데이트된 스택 요소...
Keyboards
Cameras
Ultrabook
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
최상위 요소 = Keyboards
업데이트된 요소 개수 = 10
최상위 요소 제거 및 반환 = Keyboards
업데이트된 요소 개수 = 9
업데이트된 스택 요소...
Cameras
Ultrabook
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron

예제 2 – Clone과 함께 사용하는 Pop()

두 번째 예제에서는 Clone() 메서드로 스택 복사본을 만든 뒤, 원본에는 영향을 주지 않고 복사본(stack2)에서만 Pop()을 호출하는 방식을 보여줍니다.

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      Stack stack = new Stack();
      stack.Push("Inspiron");
      stack.Push("Alienware");
      stack.Push("Projectors");
      stack.Push("Monitors");
      stack.Push("XPS");
      stack.Push("Laptop");
      stack.Push("Notebook");

      Console.WriteLine("스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
      Console.WriteLine("요소 개수 = " + stack.Count);
      Console.WriteLine("Speakers가 스택에 있나요? = " + stack.Contains("Speakers"));

      stack.Push("Headphone");
      stack.Push("Keyboard");
      stack.Push("Earphone");

      Console.WriteLine("\n업데이트된 스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
      Console.WriteLine("업데이트된 요소 개수 = " + stack.Count);
      Console.WriteLine("Alienware가 스택에 있나요? = " + stack.Contains("Alienware"));

      Stack stack2 = (Stack)stack.Clone();
      Console.WriteLine("\n복제된 스택 요소...");
      foreach(string val in stack2) {
         Console.WriteLine(val);
      }
      Console.WriteLine("stack2 요소 개수 = " + stack2.Count);
      Console.WriteLine("stack2의 최상위 요소 = " + stack2.Peek());

      Console.WriteLine("\nstack2에서 최상위 요소 제거 및 반환 = " + stack2.Pop());
      Console.WriteLine("stack2 요소 개수 = " + stack2.Count);

      Console.WriteLine("\n원본 스택 요소...");
      foreach(string val in stack) {
         Console.WriteLine(val);
      }
   }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

스택 요소...
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
요소 개수 = 7
Speakers가 스택에 있나요? = False
업데이트된 스택 요소...
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
업데이트된 요소 개수 = 10
Alienware가 스택에 있나요? = True
복제된 스택 요소...
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
stack2 요소 개수 = 10
stack2의 최상위 요소 = Earphone
stack2에서 최상위 요소 제거 및 반환 = Earphone
stack2 요소 개수 = 9
원본 스택 요소...
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron

정리

  • Pop(): 스택 맨 위 요소를 제거하면서 반환합니다.
  • Peek(): 스택 맨 위 요소를 제거하지 않고 값만 확인합니다.
  • Push(): 스택 맨 위에 새 요소를 추가합니다.
  • 빈 스택에서 Pop() 또는 Peek()를 호출하면 InvalidOperationException이 발생하므로 주의해야 합니다.