ํธ๋ฆฌ๋? ๊ทธ๋ํ์ ํ ์ข ๋ฅ์ด๋ค. ํธ๋ฆฌ๋ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค. ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ฐ๋๋ค. ๋ฃจํธ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ทธ ์์๋ค๋ ๋ชจ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๋ ธ๋๋ค๊ณผ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ์ฃ์ง๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ด ์ฐ๊ฒฐ๋ ์ฃ์ง๋ค์ ์ ๋๋ก ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๋๋ค. ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์๋ ๋ฌด์กฐ๊ฑด ๋ ธ๋์ ์ - 1 ์ ๋ง์กฑํ๋ค. ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ค์ ๋จ ํ๋์ ๋ถ๋ชจ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค. ๋ฃจํธ์์ ์ด๋ค ๋ ธ๋๋ก ๊ฐ๋ ๊ฒฝ๋ก๋ Uniqueํ๋ค. ํธ๋ฆฌ์ ๊ด๋ จ๋ ์ฉ์ด depth : ๋ฃจํธ์์ ์ด๋ค ๋ ธ๋์ ๋๋ฌํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ์ฃ์ง์ ์๋ฅผ ๋งํ๋ค. height : ๋ฃจํธ๋ ธ๋์์ ์์๋ ธ๋์ ์ด๋ฅด๋ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก์ ์ฃ์ง ์๋ฅผ ์๋ฏธํ๋ค. ..
์ฐ์ ์์ ํ๋? ์ฐ์ ์์์ ๊ฐ๋ ์ ํ์ ๋์ ํ ์๋ฃ ๊ตฌ์กฐ ๋ฐ์ดํฐ๋ค์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ค. ์ฐ์ ์์ ํ๋ ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํ ์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. ์ด ์ค์์ ํ(heap)์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ค. ํ์ด๋? ์์ ์ด์งํธ๋ฆฌ ๊ตฌ์กฐ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋ฝ์๋ผ ๋ ์ฌ์ฉํ๊ธฐ ์ข์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ ์์ ํ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์๋ Level์ ๋ฐ๋ฅธ ์ ๋ ฌ๋ง ์ด๋ฃจ์ด์ ธ ๋์จํ ์ ๋ ฌ์ํ๋ฅผ ์ ์งํ๋ค. (Max Heap์ธ ๊ฒฝ์ฐ ๋ถ๋ชจ๊ฐ ์์๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ , Min Heap์ธ ๊ฒฝ์ฐ ๋ถ๋ชจ๊ฐ ์์๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ผ ํจ) ํ์ ์ข ๋ฅ Max Heap ๋ฃจํธ ๋ ธ๋์๋ ํญ์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์์นํ๊ณ ์์ผ๋ฉฐ, ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์ ๋ ธ๋๋ค๋ณด๋ค ๋ฌด์กฐ๊ฑด ๊ฐ์ด ์ปค์ผํ๋ค. M..
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋? ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ๋์ง ์๋ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ฉฐ, ๊ฐ ๋ ธ๋๋ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ์๋ก๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ ๊ทผํ๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ ํน์ง ์ฅ์ ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ์์์ ์๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ํ์๊ฐ ์๋ค. ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ๊ณต๊ฐ์ ์ถ๊ฐ๋ก ํ ๋น๋ฐ๊ฑฐ๋ ๋๋จธ์ง ๋ฐ์ดํฐ๋ค์ ์์น๋ฅผ ์ด๋์ํฌ ํ์๊ฐ ์์ด์ ์ฝ์ ๋ฐ ์ญ์ ๊ฐ ์ฉ์ดํ๋ค. ๋จ์ ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ํน์ ์ธ๋ฑ์ค์ ์์น์ O(1)์ ์ ๊ทผํ์ง ๋ชปํ๊ณ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์์๋ฅผ ํ์ํด์ผํ๋ค. ๊ฐ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ๋ง ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ์๋, ํฌ์ธํฐ ๋ณ์์ ๊ณต๊ฐ๋ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ค. ์ฝ๋๋ก ๋ณด๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋ ๊ตฌํ class Node { private Node left; private Node right; private final int data; ..
Stack์ด๋? LIFO(Last in First Out, ํ์ ์ ์ถ), ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ๊ณณ์ผ๋ก ์ ํ๋๋ ์๋ฃ๊ตฌ์กฐ Stack ์์ ์ผ๋ฐ์ ์ธ ํจ์์ ์ฝ์คํ, ์คํ์ด ๋์น๊ฒ ๋๋ฉด StackOverFlow๊ฐ ๋ฐ์ํ๋ค. ๋ฌธ์์ด ์ญ์ ์ถ๋ ฅ, ์ฐ์ฐ์ ํ์ํ๊ธฐ๋ฒ๊ณผ ๊ฐ์ ์ํฉ์์ ์ฌ์ฉํ๋ค. ์ฝ๋๋ก ์ดํดํ๋ Stack class Stack { List list = new ArrayList(); private final int STACK_MAX_SIZE; private int top = 0; public Stack(int STACK_MAX_SIZE) { this.STACK_MAX_SIZE = STACK_MAX_SIZE; } void push(int data) { if(isFull()) return ; list.add(to..