๐๐ป Deque
- ์๋ฐฉํฅ ๋๊ธฐ์ด์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ
- Stack๊ณผ Queue์ ํผํฉ๊ตฌ์กฐ๋ก Queue์ ์ธํ์ ์ผ๋ก ๋น์ทํ ๊ตฌ์กฐ
๐ Deque์ ํน์ง
โ Stack๋ฐ Queue๋ฅผ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์์ชฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ญ์ ํ ์ ์์ด์ Stack๊ณผ Queue ๊ตฌํ ๊ฐ๋ฅ
- ์ถ๊ฐ์ ์ญ์ ๋ฅผ ์์ชฝ์์ ์ ์ด ๊ฐ๋ฅ (ex. ๋ฐ์ดํฐ ์ถ๊ฐ๋ ํ์ชฝ์์๋ง ๊ฐ๋ฅํ๊ณ ์ญ์ ๋ ์์ชฝ ๊ฐ๋ฅ)
โก ์๋ฐฉํฅ ๋์์ ๋ฐ์ดํฐ ์ถ๊ฐ ์ญ์ ์ฉ์ด
- ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด ์์ชฝ์์ ๋ฐ์ดํฐ ์ ๊ทผ, ์ถ๊ฐ, ์ญ์ ์ฉ์ด
โข ์์์ ๋ฐ์ดํฐ๋ง ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ๋ ๋ถ๊ฐ
- ๋ฐํ๋ ์๋ฐฉํฅ ๋์ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด ์๋ฐฉํฅ์ด ์๋ ์ค๊ฐ์ ์๋ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ด๋ ค์
๐๐ป Linked List : ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ ํ์ผ๋ก ๊ทธ๋ฃนํ๋ ๋ฐ์ดํฐ์ ์งํฉ
- ๋ฐ์ดํฐ์ ๋ค์ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ํฌํจํ๊ณ ์๋ ํ๋์ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ
- ๋ฐฐ์ด์ ์ฐ์๋ ๊ณต๊ฐ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์ธ๋ฑ์ค๋ก ๊ฐ๊ฐ์ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
- ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ตฌ์กฐ๋ก ์์น๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์ด๋ํด์ผ ํจ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ํฉ์ด์ง ๊ณต๊ฐ์ ๋ ธ๋๋ค์ ์ฐ๊ฒฐ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
๐ Linked List ์ ํน์ง
โ ๋ ธ๋์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ๋น ๋ฅด๊ณ ์ฌ์
- ๋ฐฐ์ด(์ถ๊ฐ ์ญ์ ์ ์ฌํ ๋น)๊ณผ ๋ฌ๋ฆฌ ์์๊ฐ ์์ด ์ด๋์๋ ์์ฝ๊ฒ ์ถ๊ฐ ์ญ์ ๊ฐ๋ฅ
โก ๋ ธ๋์ ๊ฐ์ ์ฐพ์ผ๋ฌ๋ฉด ์ต๋ ์ ์ฒด๋ฅผ ์ํํด์ผ ํจ
- ๋ฐฐ์ด(์ฐ์์ ์ผ๋ก ์ด์ด์ ธ ์์)๊ณผ ๋ฌ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด์ ธ ์์ด ์ฝ๊ฒ ์ ๊ทผ์ด ์ด๋ ค์
๐๐ป Hash Table
- ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ํด์๋ฅผ ์์ธ์ผ๋ก ์ผ์ ํค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- ์ ํ๋ฒํธ ๋จ์ถํค ์ง์ ๊ณผ ๋น์ทํ ๊ฐ๋ ์ผ๋ก ์ ์ฅ๋ช ์ key๋ก, ๋จ์ถํค๋ฅผ hash๋ก, ์ ํ๋ฒํธ๋ฅผ value๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ
๐ Hash Table ์ ํน์ง
โ ์ ์ฅ, ์ญ์ , ๊ฒ์ ๊ณผ์
- ์ ์ฅ, ๊ฒ์, ์ญ์ ํ๊ท ์ ์ผ๋ก O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์์ ์ด ๋งค์ฐ ๋น ๋ฆ
- ํด์ํจ์์ ํค ๊ฐ์ ๋ฃ์ด ํด์ ๊ฐ์ ๋ง๋ค๊ณ ํด์ ๊ฐ๊ณผ ์ผ์นํ๋ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ๊ฒ์, ์ญ์ , ์ ์ฅ
- ํด์ํจ์๋ฅผ ๊ฑฐ์ณ ํด์๋ฅผ ์ฐพ์๋ด๋ ์๊ฐ์ ๊ณ ๋ คํ์ง ์์
โก ๋ํ์ ์ธ ํด์ ์๊ณ ๋ฆฌ์ฆ
(1) Division Method
- Number type์ ํค๋ฅผ ์ ์ฅ์์ ํฌ๊ธฐ๋ก ๋๋์ด ๋์จ ๋๋จธ์ง๋ฅผ ์์ธ์ผ๋ก ์ฌ์ฉ
- key ๊ฐ์ด 23์ผ ๋ ํ ์ด๋ธ ํฌ๊ธฐ๊ฐ 7์ด๋ผ๋ฉด ์ธ๋ฑ์ค๋ 2 ! :: 23 % 7 = 2
(2) Digit Folding
- ํค์ ๋ฌธ์์ด์ ์์คํค์ฝ๋๋ก ๋ฐ๊พธ๊ณ ๊ทธ ๊ฐ์ ํฉํด ์ ์ฅ์์์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ
(3) Multiplication Method
- ์ซ์๋ก ๋ ํค ๊ฐ(K)๊ณผ 0๊ณผ 1 ์ฌ์ด์ ์ค์(A), 2์ ์ ๊ณฑ์์ธ (M)์ ์ฌ์ฉํ์ฌ (KA mod 1)m์ผ๋ก ์ธ๋ฑ์ค ๊ณ์ฐ
(4) Universal Hashing
- ๋ค์์ ํด์ํจ์๋ฅผ ๋ง๋ค์ด ํน์ ์ฅ์์ ๋ฃ๊ณ ๋ฌด์์๋ก ํด์ํจ์๋ฅด ์ ํํ์ฌ ํด์ ๊ฐ ์ ์
๐ ํด์ ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
๐ก ํด์ ์ถฉ๋ Hash Conflict
: ์๋ก ๋ค๋ฅธ ํค๊ฐ ๊ฐ์ ํด์๊ฐ ๋๋ ๊ฒฝ์ฐ
โ ๊ฐ๋ฐฉ ์ฐ๊ฒฐ๋ฒ Open Addressing
- ํด์ ์ถฉ๋ ๋ฐ์ ์, ๋ค๋ฅธ ์ธ๋ฑ์ค์ ํด๋น ์๋ฃ๋ฅผ ์ฝ์
(1) Linear Probing
- ํ์ฌ ์ค๋ณต๋ ์์ธ์ผ๋ก ๋ถํฐ ๊ณ ์ ๋ ์ซ์๋งํผ ์ด๋ํ์ฌ ๋น์ด์๋ ์ ์ฅ์์ ๋ฐ์ดํฐ ์ ์ฅ
(2) Quadratic Probing
- ํ์ฌ ์ค๋ณต๋ ์์ธ์ผ๋ก ๋ถํฐ ์ด๋ํ ์ซ์๋ฅผ ์ ๊ณฑ์ผ๋ก ์ฌ์ฉ ( ์ฒซ ์ถฉ๋์ : 1^1, ๋๋ฒ์งธ ์ถฉ๋์ : 2^2, ์ธ๋ฒ์ฌ ์ถฉ๋์ : 3^3 )
(3) Double Hasing Probing
- ํ๋์ ํด์ํจ์์์ ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ฉด ๋ฏธ๋ฆฌ ์ง์ ํด ๋ ๋ค๋ฅธ ํด์ ํจ์๋ฅผ ์ด์ฉํด ์๋ก์ด ์ฃผ์๋ฅผ ๋ฐ์ ์ฌ์ฉ
โก ๋ถ๋ฆฌ ์ฐ๊ฒฐ๋ฒ Seperate Chaining
- ๋์ผํ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ์ ๋ํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ํธ๋ฆฌ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ์ ์ฃผ์ ์ ์ฅ
โข ์ ์ฅ์ ํ์ฅ Resize
- HashMap์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ก ์ ์ฅ์์ ํฌ๊ธฐ๋ฅผ ๋ ๋ฐฐ ์ด์ ๋๋ ค ์ฑ๋ฅ ๊ฐ์ ๋ฌธ์ ํด๊ฒฐ
๐๐ป Heap Tree
- ์ฐ์ ์์์ ๋ฐ๋ผ์ ๋น ๋ฅด๊ฒ ์๋ฃ๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ตฌ์กฐ
- ์๊ธ์ค์ ์๊ธํ์๋ถํฐ ์น๋ฃํ๋ ๊ฒ๊ณผ ๋น์ทํ ๊ฐ๋
- ๋์จํ ์ ๋ ฌ๊ตฌ์กฐ๋ก ๊ตฌํ
* ๋์จํ ์ ๋ ฌ๊ตฌ์กฐ ? ๋ถ๋ชจ๋ ์์๋ณด๋ค ํญ์ ํฌ๊ฑฐ๋ ์๊ฒ ์ ๋ ฌ & ์์๋ผ๋ฆฌ๋ ๊ฐ ํฌ๊ธฐ ์ค์ x
๐ Heap Tree ์ ํน์ง
โ ์์ ์ด์ง ํธ๋ฆฌ
- ์ฝ์ ์ญ์ ์ ์ฑ๋ฅ์ ์ํด ์์ ์ด์ง ํธ๋ฆฌ๋ก ๊ตฌํ
โก ์ค๋ณต๋ ๊ฐ ์ ์ฅ
- ์ผ๋ฐ์ ์ธ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ฌ๋ฆฌ ์ค๋ณต๋ ๊ฐ ์ ์ฅ ๊ฐ๋ฅ
- ํํธ๋ฆฌ๋ ๋จ์ํ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์๋ด๊ธฐ ์ํ ๊ตฌ์กฐ
โข ์ต๋ / ์ต์ ํ
- ๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ด๊ณ ์ ์ ์์ ๊ฐ์ผ๋ก ๊ตฌํ ํ๋ค๋ฉด ์ต๋ ํ
- ๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ด๊ณ ์ ์ ํฐ ๊ฐ์ผ๋ก ๊ตฌํ ํ๋ค๋ฉด ์ต์ ํ
๐ Heap Tree ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์
โ ๋ฐ์ดํฐ ๊ฒ์
- ์๊ฐ ๋ณต์ก๋๋ 0(1)
โก ๋ฐ์ดํฐ ์ฝ์
(1) ๊ฐ์ฅ ๋ง์ง๋ง ๋ ธ๋์ ์๋ก์ด ๊ฐ ์ ์ฅ
(2) ์ฝ์ ๋ ๋ ธ๋์ ๋ถ๋ชจ์ ๊ฐ ๋น๊ต
(3) ์ต๋ ํ์ผ ๊ฒฝ์ฐ ๋ถ๋ชจ๊ฐ ๋ ํฌ๋ค๋ฉด ์ ์ง, ์ฝ์ ๋ ๋ ธ๋๊ฐ ๋ ํฌ๋ค๋ฉด ์์น ๋ณ๊ฒฝ
(4) ๊ณ์ํด์ (1)-(3) ๊ณผ์ ๋ฐ๋ณต
โข ๋ฐ์ดํฐ ์ญ์
(1) ๋ฃจํธ ๋ ธ๋์ ๊ฐ ์ ๊ฑฐ
(2) ๋ฃจํธ ์๋ฆฌ์ ๋ง์ง๋ง ๋ ธ๋ ๊ฐ ์ฝ์
(3) ์ฌ๋ผ๊ฐ ๋ ธ๋์ ๊ฐ๊ณผ ์์ ๋ ธ๋์ ๊ฐ ๋น๊ตํ๋ฉฐ ๊ฐ ์์น ๋ณ๊ฒฝ
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ์์ด๊ณผ ์กฐํฉ (0) | 2022.06.04 |
---|---|
[TIL] ํ์ ์๊ณ ๋ฆฌ์ฆ : Greedy (0) | 2022.06.01 |
[TIL] ์ฝ๋ฉํ ์คํธ (0) | 2022.05.31 |
[TIL] ์๋ฃ๊ตฌ์กฐ : ํธ๋ฆฌ, ๊ทธ๋ํ, ์ด์งํ์ํธ๋ฆฌ (0) | 2022.05.29 |
[TIL] ์๋ฃ๊ตฌ์กฐ : ์คํ, ํ (0) | 2022.05.27 |