728x90

 

정의 및 특징
  • 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질 - LIFO(후입선출)
  • 재귀적인 함수, 알고리즘 및 웹 브라우저 방문 기록 등에 사용
  • 주로 문자열 폭발, 괄호만들기, 짝찾기 키워드를 기반으로 이루어진 문제에서 사용 가능
  • "교차하지 않고" 라는 문장이 나오면 스택 사용 고려

 

시간 복잡도
  • 삽입 및 삭제 -> O(1)
  • 탐색 -> O(n)
    • n번재 요소를 찾는다고 가정하면 계속해서 앞에 있는 요소를 끄집어내야하기 때문

 

예시 코드
#include<bits/stdc++.h>
using namespace std;
stack<string> stk;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    stk.push("엄");
    stk.push("준");
    stk.push("식");
    stk.push("화");
    stk.push("이");
    stk.push("팅");
    while(stk.size()){
    	cout << stk.top() << "\n";
    	stk.pop();
    }
}
/*
팅
이
화
식
준
엄
*/

 

method

 

  • push(value)
    • 해당 value를 스택에 추가한다.
  • pop()
    • 가장 마지막에 추가한 요소를 지운다 (가장 위에 있는 요소를 지운다고도 함)
  • top()
    • 가장 마지막에 있는 요소를 참조 (가장 위에 있다고도 한다.)
  • size()
    • 스택의 크기

 

더 많은 내용은 아래 게시물 참조(python으로 작성)

2022.09.09 - [CS/자료구조] - [자료구조] Stack with Python

 

[자료구조] Stack with Python

예전에 보았던 배열, 2차원 리스트와 같이 자료구조의 하나인 Stack에 대해서 알아보자. 알고리즘 문제를 풀면서도 많이 사용될 것이고 그 다음 구조, 알고리즘을 풀기 위해서는 잘 알아두는 것이

cheon2308.tistory.com

 

728x90

'Programming Language > C++' 카테고리의 다른 글

[C++] struct with Cpp  (3) 2023.12.20
[C++] queue, deque with Cpp  (1) 2023.12.20
[C++] set, multiset with Cpp  (0) 2023.12.20
[C++] map, unordered_map with Cpp  (1) 2023.12.20
[C++] list with Cpp  (2) 2023.12.20