ํฌ์ŠคํŠธ

๐ŸŒ“ Stack ์Šคํƒ

๐Ÿ’ซ ์ •์˜


ํ•œ ์ชฝ ๋์—์„œ๋งŒ ์›์†Œ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜(PUSH) ๋บ„ ์ˆ˜ ์žˆ๋Š”(POP) ์ž๋ฃŒ๊ตฌ์กฐ
Like ํ”„๋ง๊ธ€์Šค ํ†ต, ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ, ์„œ๋ฅ˜๋”๋ฏธ

LIFO
Last in First out

Restricted Structure
ํŠน์ • ์œ„์น˜์—์„œ๋งŒ ์›์†Œ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ œํ•œ๋œ ์ž๋ฃŒ๊ตฌ์กฐ (์Šคํƒ, ํ, ๋ฑ)


๐Ÿ’ซ ์„ฑ์งˆ


  • ์›์†Œ์˜ ์ถ”๊ฐ€ : O(1)
  • ์›์†Œ ์ œ๊ฑฐ : O(1)
  • ์ œ์ผ ์ƒ๋‹จ์˜ ์›์†Œ ํ™•์ธ : O(1)
  • ์ œ์ผ ์ƒ๋‹จ์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ํ™•์ธ/๋ณ€๊ฒฝ์ด ์›์น™์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅ


๐Ÿ’ซ ๊ตฌํ˜„ ๋ฐ ์‚ฌ์šฉ


๐Ÿซง ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ๊ตฌํ˜„

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int MAX = 100005;
int dat[MAX];
int pos = 0; // ๋‹ค์Œ ์›์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๊ณณ, size : ์›์†Œ์˜ ์ˆ˜

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

// ๊ตณ์ด dat[pos]๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Œ
// ๋‹ค์‹œ ์ ‘๊ทผํ•  ์ผ๋„ ์—†๊ณ , ๋‚˜์ค‘์— ์ƒˆ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์”Œ์›Œ์ง
void pop()
{
	pos--;
}

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


๐Ÿซง ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„

@ TODO


๐Ÿซง C++ STL stack

1
2
3
4
// Declaration & Definition & Init
#include <stack>

stack<int> s;
1
2
3
4
5
6
// Use
s.push(10);
s.pop();
s.size();
s.empty();
s.top();


๐Ÿ’ซ ๋ฉ”๋ชจ


  • ์Šคํƒ์„ ์ด์šฉํ•œ ๋ฌธ์ œ
    • ์ˆ˜์‹์˜ ๊ด„ํ˜ธ ์Œ
    • ์ „์œ„/์ค‘์œ„/ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• (์ฝ”ํ…Œ ์ž˜ ์•ˆ๋‚˜์˜ด)
    • DFS
    • Flood Fill
  • CallStack ํ˜ธ์ถœ์Šคํƒ
  • Stackoverflow


์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.