-
์คํ
- ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฐ๋ค(stack).
- LIFO(Last-In-First-Out)์ ๋ฐ๋ผ ์๋ฃ๋ฅผ ๋ฐฐ์ดํ๋ค.
- ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์์ ์๊ฐ์ i๋ฒ์งธ ํญ๋ชฉ์ ์ ๊ทผํ ์ ์๋ค. ํ์ง๋ง ์คํ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ์ฐ์ฐ์ ์์ ์๊ฐ์ ๊ฐ๋ฅํ๋ค.
-
์ฐ์ฐ
pop()
push(item)
peek()
isEmpty()
-
๊ตฌํ
- ์คํ์ ๊ฐ์ ๋ฐฉํฅ์์ ์์ดํ ์ ์ถ๊ฐํ๊ณ ์ญ์ ํ๋ค๋ ์กฐ๊ฑดํ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ ์๋ ์๋ค.
public class MyStack { private static class StackNode { private T data; private StackNode next; public StackNode(T data) { this.data = data; } } private StackNode top; public T pop() { if (top == null) throw new EmptyStackException(); T item = top.data; top = top.next; return item; } public void push(T item) { StackNode t = new StackNode(item); t.next = top; top = t; } public T peek() { if (top == null) throw new EmptyStackException(); return top.data; } public boolean isEmpty() { return top == null; } }
-
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๋ ์ ์ฉํ๋ค.
- ์ฌ๊ท์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์คํ์ ๋ฃ์ด ์ฃผ๊ณ , ์ฌ๊ท ํจ์๋ฅผ ๋น ์ ธ ๋์ **ํด๊ฐ ๊ฒ์(backtrack)**์ ํ ๋๋ ์คํ์ ๋ฃ์ด ๋์๋ ์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ ์ค์ผ ํ๋ค.
-
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต์ ํํ(iterative)๋ฅผ ํตํด์ ๊ตฌํํ ์ ์๊ฒ ํด์ค๋ค.
-
ํ
- FIFO(First-In-First-Out)
-
์ฐ์ฐ
add(item)
remove()
peek()
isEmpty()
-
๊ตฌํ
- ํ ๋ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ ์ ์๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ฐ๋ ๋ฐฉํฅ์์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋๋ก ๊ตฌํํ๋ค๋ฉด ๊ทผ๋ณธ์ ์ผ๋ก ํ์ ๊ฐ๋ค.
public class MyQueue { private static class QueueNode { private T data; private QueueNode next; public QueueNode(T data) { this.data = data; } } private QueueNode first; private QueueNode last; public void add(T item) { QueueNode t = new QueueNode(item); if (last != null) { last.next = t; } last = t; if (first == null) { first = last; } } public T remove() { if (first == null) throw new NoSuchElementException(); T data = first.data; first = first.next; if (first == null) { last = null; } return data; } public T peek() { if (first == null) throw new NoSuchElementException(); return first.data; } public boolean isEmpty() { return first == null; } }
-
ํ์์ ์ฒ์๊ณผ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ๊ฐฑ์ ํ ๋ ์ค์๊ฐ ๋์ค๊ธฐ ์ฝ๋ค.
-
๋๋น ์ฐ์ ํ์(breadth-first search)์ ํ๊ฑฐ๋ ์บ์๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ์ ์ข ์ข ์ฌ์ฉ๋๋ค.
- ๋ ธ๋๋ฅผ ํ๋ ์ฒ๋ฆฌํ ๋๋ง๋ค ํด๋น ๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ค์ ํ์ ๋ค์ ์ ์ฅํ๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ ธ๋๋ฅผ ์ ๊ทผํ ์์๋๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.
- ํ ๊ฐ๋ก ์ธ ๊ฐ
- ์คํ Min
- ์ ์ ๋ฌด๋๊ธฐ
- ์คํ์ผ๋ก ํ
- ์คํ ์ ๋ ฌ
- ๋๋ฌผ ๋ณดํธ์