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

C#에서 스택(Stack)의 맨 위에 있는 개체 가져오기 – Peek() 메서드 완벽 가이드

C#에서 스택(Stack)의 맨 위에 있는 개체를 확인하려면 Peek() 메서드를 사용합니다. 이 메서드는 스택에서 요소를 제거하지 않고 가장 위에 있는 항목만 반환하기 때문에, 스택의 상태를 유지한 채 최상위 값을 조회할 때 매우 유용합니다.

Peek() 메서드란?

Stack<T> 클래스의 Peek() 메서드는 스택의 맨 위(가장 마지막에 Push된) 요소를 반환합니다. 중요한 특징은 다음과 같습니다.

  • 요소를 반환만 하며 스택에서 제거하지 않습니다.
  • 스택이 비어 있을 경우 InvalidOperationException 예외가 발생합니다.

예제 1: 문자열 스택에서 최상위 요소 가져오기

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");
      stack.Push("I");
      stack.Push("J");
      Console.WriteLine("Count of elements = " + stack.Count);
      Console.WriteLine("Element at the top of stack = " + stack.Peek());
   }
}

실행 결과

Count of elements = 10
Element at the top of stack = J

위 예제에서는 A부터 J까지 10개의 문자열을 순서대로 Push했습니다. 스택은 LIFO(Last In, First Out, 후입선출) 구조이므로 마지막에 추가된 "J"가 맨 위에 위치하게 되며, Peek() 호출 시 "J"가 반환됩니다.

예제 2: 정수 스택에서 Peek() 여러 번 호출하기

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main() {
      Stack<int> stack = new Stack<int>();
      stack.Push(10);
      stack.Push(20);
      stack.Push(30);
      stack.Push(40);
      stack.Push(50);
      stack.Push(60);
      stack.Push(70);
      stack.Push(80);
      stack.Push(90);
      stack.Push(100);
      Console.WriteLine("Count of elements = " + stack.Count);
      Console.WriteLine("Element at the top of stack = " + stack.Peek());
      Console.WriteLine("Element at the top of stack = " + stack.Peek());
   }
}

실행 결과

Count of elements = 10
Element at the top of stack = 100
Element at the top of stack = 100

두 번째 예제에서는 Peek()를 두 번 연속 호출했지만, 결과는 모두 100으로 동일합니다. 이는 Peek()가 요소를 제거하지 않기 때문입니다. 만약 Pop()을 사용했다면 첫 번째 호출 후 스택에서 100이 제거되어 두 번째 호출 결과가 90으로 달라졌을 것입니다.

Peek()와 Pop()의 차이점

두 메서드 모두 스택의 최상위 요소를 반환하지만, 결정적인 차이가 있습니다.

  • Peek(): 최상위 요소를 반환만 하며, 스택은 변경되지 않습니다.
  • Pop(): 최상위 요소를 반환하고 해당 요소를 스택에서 제거합니다.

따라서 스택의 내용을 그대로 유지하면서 최상위 값만 확인하고 싶다면 Peek()를 사용하는 것이 올바른 선택입니다.