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

C# Stack의 맨 위에 요소 삽입하기 – Push() 메서드 완벽 가이드

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 문으로 맨 위부터 차례대로 순회할 수 있습니다.