๐Hash Function
์์ ํฌ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํฌ๊ธฐ ๊ฐ์ผ๋ก ๋งคํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํจ์

๐๋ก๋ ํฉํฐ(Load Factor)
ํด์ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ฐ์ n์ ๋ฒํท์ ๊ฐ์ k๋ก ๋๋ ๊ฒ
- ๋ก๋ ํฉํฐ ๋น์จ์ ๋ฐ๋ผ ํด์ ํจ์๋ฅผ ์ฌ์์ฑํด์ผ ๋ ์ง, ํด์ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํด์ผ ํ ์ง๋ฅผ ๊ฒฐ์
- ์ผ๋ฐ์ ์ผ๋ก ๋ก๋ ํฉํฐ๊ฐ ์ฆ๊ฐํ ์๋ก ํด์ ํ ์ด๋ธ์ ์ฑ๋ฅ์ ์ ์ ๊ฐ์
๐ํด์ฑ
ํด์ ํ ์ด๋ธ์ ์ธ๋ฑ์ฑํ๊ธฐ ์ํด ํด์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
- ์ ๋ณด๋ฅผ ๊ฐ๋ฅํ ํ ๋น ๋ฅด๊ฒ ์ ์ฅํ๊ณ ๊ฒ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
- ์ต์ ์ ๊ฒ์์ด ํ์ํ ๋ถ์ผ์์ ์ฃผ๋ก ์ฌ์ฉ
๐Hash Table
ํด์ ํจ์๋ฅผ ํตํด์ ์ป์ ํด์(key)๋ฅผ index๋ก ์ฌ์ฉํ๊ณ ํด๋น index์ value๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ์ด์ฌ์ dictionary๊ฐ hash table๋ก ๊ตฌํ๋์ด ์์
๐ํน์ง
- key๋ฅผ value์ ๋งคํํ ์ ์์
- ์ฝ์ , ๊ฒ์, ์ญ์ ์ ๊ธฐ๋ณธ ์ฐ์ฐ์ด ๊ฐ๋ฅ
- ์๋๊ฐ ๋น ๋ฆ
๐์๋
| Algorithm | Average | Worst |
|---|---|---|
| space | O(n) | O(n) |
| insert | O(1) | O(n) |
| search | O(1) | O(n) |
| delete | O(1) | O(n) |
- key-value๊ฐ 1:1 ๋งคํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฝ์ , ๊ฒ์, ์ญ์ ๊ณผ์ ์์ ๋ชจ๋ ํ๊ท ์ ์ผ๋ก O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง
๐์ถฉ๋
ํด์ ํจ์๋ฅผ ํตํด ํด์ฑํ ํด์ ๊ฐ์ด ์ค๋ณต์ธ ๊ฒฝ์ฐ
๐ํด๊ฒฐ๋ฐฉ๋ฒ
1. Separate Chaining(๊ฐ๋ณ ์ฒด์ด๋)
์ถฉ๋ ๋ฐ์ ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ์

- ์ต์ ์ ๊ฒฝ์ฐ, ํ์์ ์๊ฐ์ด O(n)์ด ๋จ
Separate Chaining์ ์ด๋ค ์๋ฆฌ์ธ๊ฐ์?
- ํค์ ํด์ ๊ฐ์ ๊ณ์ฐ
- ํด์ ๊ฐ์ ์ด์ฉํด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํจ
- ๊ฐ์ ์ธ๋ฑ์ค๊ฐ ์๋ค๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ
2. Open Addressing(์คํ ์ด๋๋ ์ฑ)
์ถฉ๋ ๋ฐ์ ์ ํ์ฌ๋ฅผ ํตํด ๋น ๊ณต๊ฐ์ ์ฐพ์๋์๋ ๋ฐฉ์

- ๋ชจ๋ ์์๊ฐ ๋ฐ๋์ ์์ ์ ํด์๊ฐ๊ณผ ์ผ์นํ๋ ์ฃผ์์ ์ ์ฅ๋๋ค๋ ๋ณด์ฅ์ ์์
- ๋ฒํท ์ฌ์ด์ฆ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ ์ฝ์ ๋ถ๊ฐ
- ํ์ด์ฌ์ dictionary๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์
Open Addressing์ ํ์ฌ ๋ฐฉ์์?
์ ํ ํ์ฌ ์ฃผ๋ก ์ฌ์ฉ
- ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ ํด๋น ์์น๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ฌ๋ฅผ ํ๋์ฉ ์งํ
- ํน์ ์์น๊ฐ ์ ์ ๋์ด ์์ผ๋ฉด ๋ฐ๋ก ๊ทธ๋ค์ ์์น๋ฅผ ํ์ธ
- ํ์ฌ๋ฅผ ์งํํ๋ค๊ฐ ๋น์ด ์๋ ๊ณต๊ฐ์ ๋ฐ๊ฒฌํ๋ฉด ์ฝ์
๐์ฝ๋ฉ ํ ์คํธ์์์ Hash Table
๋ธ๋ฃจํธ ํฌ์ค(์์ ํ์)์ผ๋ก๋ ์๊ฐ์ด๊ณผ์ ๋น ์ง๊ฒ ๋๋ ๋ฌธ์ ์์ ์ฃผ๋ก ์ฌ์ฉ