[자료구조] 스택(Stack)

kms·2023년 3월 17일
0

자료구조

목록 보기
1/6

스택(Stack)이란?


  • 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 후입선출(LIFO: Last-In First-Out) 구조를 가진 자료구조.
  • 스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조이다.

스택(Stack)의 주요 메서드


  • push(): 스택에 데이터 추가
  • pop(): 스택 가장 위에 있는 데이터를 삭제
  • Top = peek(): 스택 가장 위에 있는 데이터를 의미(가장 최근에 들어온 데이터)
  • isEmpty(): 스택이 비어있으면 True, 비어있지 않다면 False를 반환
  • size(): 스택의 크기 반환


스택(Stack) 사용 사례


  • 재귀 알고리즘
    • 재귀적으로 함수를 호출해야 하는 경우에 임시 데이터를 스택에 넣어준다.
    • 재귀함수를 빠져 나와 퇴각 검색(backtrack)을 할 때는 스택에 넣어 두었던 임시 데이터를 빼 줘야 한다.
    • 스택은 이런 일련의 행위를 직관적으로 가능하게 해준다.
    • 또한 스택은 재귀 알고리즘을 반복적 형태(iterative)를 통해서 구현할 수 있게 해준다.
  • 웹 브라우저 방문기록 (뒤로가기)
  • 실행 취소 (undo)
  • 역순 문자열 만들기
  • 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)
    • Ex) 올바른 괄호 문자열(VPS, Valid Parenthesis String) 판단하기
  • 후위 표기법 계산


스택(Stack)의 장단점


  • 장점
    • 구조가 단순하여 구현이 쉬움
    • 데이터 접근 속도가 빠름(스택 포인터 ptr을 이용하여 데이터에 저장, 삭제, 읽기가 빠름)
  • 단점
    • 데이터 메모리 크기를 미리 지정해야함
    • 저장 공간의 낭비가 발생할 수 있음


스택(Stack)의 시간복잡도

삭제나 삽입시 맨 위에 데이터를 삽입하거나 삭제하기 때문에 시간복잡도는 늘 O(1) 의 시간복잡도를 가집니다. 하지만 특정 데이터를 찾을 때는 특정 데이터를 찾을 때까지 수행을 해야하므로 O(n) 의 시간 복잡도를 가집니다.


복습해보기


0개의 댓글