[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ, ํ, ๋ฑ

  1. ์Šคํƒ
    1. ํŠน์ง•
    2. ์šฉ๋„
    3. ์—ฐ์‚ฐ
      1. ์‚ฝ์ž…
      2. ์‚ญ์ œ
      3. ์ ‘๊ทผ
    4. ๊ตฌํ˜„
  2. ํ
    1. ์šฉ๋„
    2. ์ข…๋ฅ˜
    3. ์—ฐ์‚ฐ
      1. ์‚ฝ์ž…
      2. ์‚ญ์ œ
      3. ์ ‘๊ทผ
    4. ๊ตฌํ˜„
  3. ์šฐ์„ ์ˆœ์œ„ ํ
  4.  ๋ฑ
    1. ์šฉ๋„
    2. ๊ตฌํ˜„

 

์Šคํƒ

์Šคํƒ์€ LIFO(Last-In First-Out), ์ฆ‰ ํ›„์ž…์„ ์ถœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ด๋ฉฐ, ์ ‘์‹œ์ฒ˜๋Ÿผ ์Œ“์—ฌ์„œ ์ดํ›„์— ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋น ์ ธ๋‚˜๊ฐ€๋„๋ก ๋˜์–ด์žˆ๋‹ค.

top ๋ณ€์ˆ˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด -1์ด๋‹ค.

 

ํŠน์ง•

  • LIFO
  • ๋‚ด๋ถ€ ์š”์†Œ๋ฅผ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์ด pop ๋ง๊ณ ๋Š” ์—†๋‹ค.

 

์šฉ๋„

์ž…๋ ฅ์˜ ์—ญ์ˆœ์ด ํ•„์š”ํ•  ๋•Œ ์Šคํƒ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์—์„œ ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ์Šคํ…œ ์Šคํƒ์ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ๋˜ํ•œ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ, ๊ณ„์‚ฐ๊ธฐ, ๋ฏธ๋กœ ํƒ์ƒ‰ ๋“ฑ์˜ ๊ฒฝ์šฐ์— ์Šคํƒ์ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

๊ณ„์‚ฐ๊ธฐ์—์„œ ์ค‘์œ„ ํ‘œ๊ธฐ์‹(infix)์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹(postfix)์œผ๋กœ ๋งŒ๋“ค์–ด ์ปดํ“จํ„ฐ๊ฐ€ ๊ณ„์‚ฐํ•˜๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค๊ธฐ๋„ ํ•œ๋‹ค.

(ํ‘œ๊ธฐ์‹ ๋”ฐ๋กœ ์ •๋ฆฌ)

 

์—ฐ์‚ฐ

 

์‚ฝ์ž…

์‚ฝ์ž… ์—ฐ์‚ฐ(push) ์‹œ top์— ์š”์†Œ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, top์„ ํ•œ ์นธ ์œ„๋กœ ์˜ฌ๋ ค์ค€๋‹ค.

 

์‚ญ์ œ

์‚ญ์ œ ์—ฐ์‚ฐ(pop) ์‹œ top์—์„œ ์š”์†Œ ํ•˜๋‚˜๋ฅผ ๋บ€ ํ›„, top์„ ํ•œ ์นธ ์•„๋ž˜๋กœ ๋‚ด๋ ค์ค€๋‹ค.

 

์ ‘๊ทผ

์ ‘๊ทผ ์—ฐ์‚ฐ์€ ์—†๋‹ค. ๋‹ค๋งŒ top์˜ ์š”์†Œ๋ฅผ ๊บผ๋‚ด์ง€๋Š” ์•Š๊ณ  ํ™•์ธ๋งŒ ํ•˜๋Š” ์šฉ๋„์˜ ์—ฐ์‚ฐ(peek)์€ ์žˆ๋‹ค.

 

๊ตฌํ˜„

์Šคํƒ์€ ๋ฐฐ์—ด ๋˜๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ ์‹œ ์Šคํƒ์˜ ํฌ๊ธฐ ์ œํ•œ์ด ์—†๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐํƒ€ ์žฅ๋‹จ์ ์€ '์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ' ํŒŒํŠธ์—์„œ ์„ค๋ช…ํ•œ ๋ฐ”์™€ ๊ฐ™๋‹ค.

C++์—์„œ๋Š” import <stack>; ๋กœ C++ STL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„, stack<int> stk;๊ณผ ๊ฐ™์ด stack<์ž๋ฃŒํ˜•> ์Šคํƒ์ด๋ฆ„์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

STL : Standard Template Library (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

 

์ž์„ธํ•œ ์„ค๋ช…์€ STL์„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ๋‹ค.

(STL ์ •๋ฆฌ)

 

ํ

ํ๋Š” FIFO(First-In First-Out), ์ฆ‰ ์„ ์ž…์„ ์ถœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ๋Œ€๊ธฐ์—ด์ฒ˜๋Ÿผ ๋ฐ€๋ ค์„œ ๋จผ์ € ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋น ์ ธ๋‚˜๊ฐ€๋„๋ก ๋˜์–ด์žˆ๋‹ค.

์‚ฝ์ž…์€ back์—์„œ ์ผ์–ด๋‚˜๋ฉฐ, ์‚ญ์ œ๋Š” front์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

 

์šฉ๋„

ํ๋Š” ๋Œ€๊ธฐ์—ด์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ํ†ต์‹ ์—๋Š” ํŒจํ‚ท์˜ ๋ชจ๋ธ๋ง์— ์ด์šฉ๋˜๊ณ  ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋Š” ๋ฒ„ํผ๋ง, ์Šค์ผ€์ค„๋ง, ์บ์‹œ ๋“ฑ์— ์ด์šฉ๋œ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ์ˆ˜ํ•™์  ๋ชจ๋ธ๋ง์—์„œ ํ์ž‰์ด๋ก ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋˜ํ•œ ์ดํ›„์— ๋‚˜์˜ฌ BFS(๋„ˆ๋น„ ์šฐ์„ ํƒ์ƒ‰)์—์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค.

 

์ข…๋ฅ˜

  • ์„ ํ˜• ํ

  • ์›ํ˜• ํ

    ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ผ์–ด๋‚  ๊ฑฑ์ •์ด ์—†๋‹ค.

  • ์šฐ์„ ์ˆœ์œ„ ํ

    ์š”์†Œ๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งค๊ฒจ, ์šฐ์„ ์ˆœ์œ„์— ๋งž๊ฒŒ ์‚ฝ์ž… / ์‚ญ์ œ ์—ฐ์‚ฐ์„ ๊ตฌํ˜„ํ•œ ํ์ด๋‹ค.

 

 

์—ฐ์‚ฐ

 

์‚ฝ์ž…

์‚ฝ์ž… ์—ฐ์‚ฐ(put == Enqueue) ์‹œ back์— ์š”์†Œ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, back์„ ํ•˜๋‚˜ ๋’ค๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค.

 

์‚ญ์ œ

์‚ญ์ œ ์—ฐ์‚ฐ(get == Dequeue ) ์‹œ front์—์„œ ์š”์†Œ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•œ ํ›„, front๋ฅผ ํ•˜๋‚˜ ๋’ค๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค.

 

์ ‘๊ทผ

peek ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜์—ฌ front์—์„œ ์š”์†Œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ตฌํ˜„

ํ ๋˜ํ•œ ์ฃผ๋กœ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋˜๊ณ , ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธด ํ•˜๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์„ ๋•Œ๋Š” ๊ตณ์ด ํ™˜ํ˜• ํ๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฑฑ์ •์€ ์—†๋‹ค.

C++์—์„œ๋Š” import <queue>; ๋กœ C++ STL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„,queue<int> q;๊ณผ ๊ฐ™์ด queue<์ž๋ฃŒํ˜•> ํ์ด๋ฆ„์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

STL : Standard Template Library (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

์ž์„ธํ•œ ์„ค๋ช…์€ STL์„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ๋‹ค.

(STL ์ •๋ฆฌ)

์šฐ์„ ์ˆœ์œ„ ํ

(ํ•ด์•ผํ•จ => ์ž๋ฃŒ๊ตฌ์กฐ ์ฑ…)

 

๋ฑ

๋ฑ์€ deque(double-ended queue)์ด๋ฉฐ front์™€ rear์—์„œ ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ํ์ด๋‹ค.

 

์šฉ๋„

๋ณดํ†ต ์Šค์ผ€์ค„๋ง์— ์‚ฌ์šฉํ•˜๋ฉฐ, ์šฐ์„ ์ˆœ์œ„ ์กฐ์ ˆ ์‹œ ํ๋‚˜ ์Šคํƒ๋ณด๋‹ค ๋” ์œ ์šฉํ•˜๋‹ค.

 

๊ตฌํ˜„

์ผ๋ฐ˜์ ์œผ๋กœ ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

C++์—์„œ๋Š” `import ;`๋กœ C++ STL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„, `deque dq;`์™€ ๊ฐ™์ด `deque<์ž๋ฃŒํ˜•> ํ์ด๋ฆ„;`์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

STL : Standard Template Library (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

์ž์„ธํ•œ ์„ค๋ช…์€ STL์„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ๋‹ค.

(STL ์ •๋ฆฌ)

๋ฐ˜์‘ํ˜•