실전알고리즘 공부

실전 알고리즘 0x05 스택

diligent_gideok 2022. 4. 14. 01:28

 스택

[ 정의와 성질 ]

- FILO( First In Last Out ) 자료구조

- 스택, 큐, 덱을 묶어서 Restricted Structure라고 부른다.

- 원소의 추가/제거 O(1)

- 제일 상단의 원소 확인이 O(1)

- 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능하다. ( 배열을 이용하면 가능하게 할 수 있다 )

 

[ 기능과 구현 ]

- 배열, 연결 리스트로 구현 가능하다.

const int MX = 1000005;
int dat[MX];
int pos = 0;

- push ( 원소 추가 )

void push ( int x ) {
	dat[pos++]=x;
}

- pop ( 원소 제거 )

void pop() {
	pos--;
}

- top ( 제일 상단의 원소 확인 )

int top(){
	cout << dat[pos-1];
}

 

[ STL stack ]

- reference : http://www.cplusplus.com/reference/stack/stack/

 

#include <bits/stdc++.h>
using namespace std;

int main(void) {
  stack<int> S;
  S.push(10); // 10
  S.push(20); // 10 20
  S.push(30); // 10 20 30
  cout << S.size() << '\n'; // 3
  if(S.empty()) cout << "S is empty\n";
  else cout << "S is not empty\n"; // S is not empty
  S.pop(); // 10 20
  cout << S.top() << '\n'; // 20
  S.pop(); // 10
  cout << S.top() << '\n'; // 10
  S.pop(); // empty
  if(S.empty()) cout << "S is empty\n"; // S is empty
  cout << S.top() << '\n'; // runtime error 발생
}

- stack이 비어있을 때 top()이나 pop()을 하면 런타임 에러가 발생한다.

 

[ 활용성 ]

- 수식의 괄호 쌍

- 전위/중위/후위 표기법 ( 코딩테스트에 나올 확률이 0에 가깝다 )

- DFS

- Flood Fill

'실전알고리즘 공부' 카테고리의 다른 글

실전 알고리즘 0x07 덱  (0) 2022.04.14
실전 알고리즘 0x06 큐  (0) 2022.04.14
실전 알고리즘 0x04 연결리스트  (0) 2022.04.13
실전 알고리즘 0x03 배열  (0) 2022.04.12
실전 알고리즘 0x02  (0) 2022.04.11