๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป/Algorithm

Stack/Queue/Deque/PriorityQueue

Stack

Last-In, First-Out -> LIFO

๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ

 

  • push: ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • pop: ๋ฐ์ดํ„ฐ ์กฐํšŒ + ์‚ญ์ œ
  • peek: ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • clear: ๋ฐ์ดํ„ฐ ์ „์ฒด ์‚ญ์ œ
  • size: stack ์‚ฌ์ด์ฆˆ
  • empty: stack ๋น„์–ด์žˆ๋Š”์ง€ ์—ฌ๋ถ€
  • contains: ํŠน์ • ๋ฐ์ดํ„ฐ ํฌํ•จ ์—ฌ๋ถ€
  • search: ํŠน์ • ๋ฐ์ดํ„ฐ ์œ„์น˜ ๋ฐ˜ํ™˜

Queue

First-In, First-Out -> FIFO

๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ

 

LinkedList๋กœ ์ƒ์„ฑ

ex) Queue<String> queue = new LinkedList<String>();

 

  • add / offer: ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • remove / poll: ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  • peek: ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • clear: ๋ฐ์ดํ„ฐ ์ „์ฒด ์‚ญ์ œ

Deque

queue์˜ ์–‘์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ

 

 

PriorityQueue

์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ

ํž™์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ 

 

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ˆซ์ž ์ˆœ -> PriorityQueue<Element> queue = new PriorityQueue<>();

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆซ์ž ์ˆœ -> PriorityQueue<Element> queue = new PriorityQueue<>(Collections.reverseOrder);