TIL (61) | 2023.10.23 | 스택

kjg5370·2023년 10월 23일
0

TIL

목록 보기
60/91
post-thumbnail

들어가기 앞서

오늘은 최종 팀프로젝트를 진행하였고
팀원들과 앞으로 하게 될 프로젝트의 전체적인 기획을 하게 되었습니다.
최종 프로젝트를 하기 전 아직 잘 모르는 개념들에대해 한번 더 정리해보고 싶어서
오늘은 스택에대해 정리해보려고 합니다.

오늘 배운 것

  • 스택(Stack)
    데이터를 저장하고 관리하기 위한 자료 구조 중 하나.
    스택은 후입선출(Last-In-First-Out, LIFO) 방식으로 동작하는 자료 구조로, 가장 최근에 추가한 항목이 가장 먼저 제거.
    스택은 주로 메서드 호출, 임시 데이터 저장, 역추적 등 다양한 컴퓨팅 작업에 사용됨.

  • C#에서 Stack 사용 예제

      using System;
    using System.Collections.Generic;
    
    class Program
    {
        static void Main()
        {
            // 정수형 데이터를 저장할 스택 생성
            Stack<int> stack = new Stack<int>();
    
            // 스택에 데이터 추가
            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
    
            // 스택에서 데이터 제거 및 출력
            while (stack.Count > 0)
            {
                int item = stack.Pop();
                Console.WriteLine(item);
            }
        }
    }
  • 스택 구조를 직접 구현

    1. MyStack 클래스 생성자 (MyStack(int capacity))

      public MyStack(int capacity)
        {
            items = new T[capacity];
            top = -1; // 스택이 비어있는 경우 top을 -1로 설정
        }

      생성자는 스택의 초기 용량(크기)를 받아와서 내부 배열을 할당
      top 변수를 -1로 초기화하여 스택이 비어있음을 나타냄

    2. Push 메서드 (Push(T item))

      public void Push(T item)
        {
            if (top == items.Length - 1)
            {
                Console.WriteLine("스택이 가득 찼습니다.");
            }
            else
            {
                items[++top] = item; // top을 증가시키고 값을 저장
            }
        }

      Push 메서드는 스택에 항목을 추가하는 메서드
      스택이 가득 차 있지 않으면 top을 증가시키고 해당 위치에 값을 저장
      스택이 가득 차 있는 경우 메시지를 출력

    3. Pop 메서드 (Pop())

        public T Pop()
          {
              if (top == -1)
              {
                  Console.WriteLine("스택이 비어있습니다.");
                  return default(T); // 스택이 비어있으면 기본값 반환
              }
              else
              {
                  T poppedItem = items[top];
                  top--; // top을 감소시켜 항목 제거
                  return poppedItem;
              }
          }

      Pop 메서드는 스택에서 최상위 항목을 제거하고 반환하는 메서드
      스택이 비어있을 때 default(T)를 반환하여 예외를 방지
      스택이 비어있지 않은 경우 top을 감소시키고 해당 위치의 값을 반환

    4. Peek 메서드 (Peek())

        public T Peek()
          {
              if (top == -1)
              {
                  Console.WriteLine("스택이 비어있습니다.");
                  return default(T);
              }
              else
              {
                  return items[top];
              }
          }

      Peek 메서드는 스택에서 최상위 항목을 제거하지 않고 반환하는 메서드
      스택이 비어있을 때 default(T)를 반환하여 예외를 방지
      스택이 비어있지 않은 경우 top 위치의 값을 반환

    5. Count 속성 (Count)

         public int Count
          {
              get { return top + 1; }
          }

      스택에 있는 항목의 수를 반환
      top 변수 값에 1을 더해서 스택에 저장된 항목의 수를 계산

    6. IsEmpty 속성 (IsEmpty)

        public bool IsEmpty
          {
              get { return top == -1; }
          }

      스택이 비어있는지 여부를 반환
      top 변수가 -1일 때 스택이 비어있음을 나타냄

진행사항

  • 초기 기획 완료
  • 와이어프레임 제작완료
  • 필수 요소 역할 분담 완료

내일 할 일

  • 최종 프로젝트 에셋 찾기
profile
학생입니다

0개의 댓글