[기초 자료구조] 스택

    Stack이란 LIFO(Last In First Out)의 개념을 가진 자료구조로, 먼저 들어간 것이 나중에 나오는 구조이다. 즉 아래와 같이 바닥이 막힌 유리병을 생각할 수 있다.

    STL에서는 <stack> 라이브러리를 포함하여 사용하며, index로 접근이 불가능하다.

    #include <stack>
    using namespace std;
    
    int main() {
    	int a=5, b=6;
    	stack<int> stk;
        	return 0;
    }

    위와 같은 상태에서 stk.push(a); stk.push(b)를 해주면 다음과 같다.

     

     

    여기서 stk.pop()을 해주면 다음과 같다.

    stk의 원소에 접근하기 위해선 stk.top()을 사용한다. 이 경우 원소를 참조는 하지만 stack에서 빼지는 않는다. 즉 이 상태에서 stk.top() == 5이다.

     

    스택은 코딩테스트에서 주로 DFS와 함께 쓰인다. DFS를 깊이를 우선 탐색하는 알고리즘인데, 1의 자식이 2, 3, 4이고, 2의 자식이 21, 22, 23일 때 스택을 사용하면 1->2->21 순으로 탐색한다. 

    'CS지식 > 자료구조, 알고리즘' 카테고리의 다른 글

    백트래킹  (0) 2022.03.07
    BFS와 DFS  (0) 2022.02.05
    Knapsack 알고리즘  (0) 2022.01.22

    댓글