๐ What I Will Learn
- ํด์(Hash)์ ๋ํด ์ดํดํ๊ธฐ
- ํด์๊ฐ ํ์ฉ๋์์ ๋ ํจ๊ณผ์ ์ธ?! ์ํฉ์ ๋ํด ๊ณต๋ถํ๊ธฐ
ํด์(Hash)๋? ๋ฐ์ดํฐ๋ฅผ ์ต๋ํ ๋น ๋ฅธ ์๋๋ก ๊ด๋ฆฌํ๋๋ก ๋์์ฃผ๋ ์๋ฃ๊ตฌ์กฐ
ํด์(Hash)
1๏ธโฃ ํด์(Hash)๋?
- ๋ฐ์ดํฐ๋ฅผ ์ต๋ํ ๋น ๋ฅธ ์๋๋ก ๊ด๋ฆฌํ๋๋ก ๋์์ฃผ๋ ์๋ฃ๊ตฌ์กฐ
- ํด์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ง์ด ์๋ชจ๋์ง๋ง
- ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค
- ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค๋ ์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์ํํธ์จ์ด์์ ํ์ฉ๋๋ค
โ๏ธ ํด์(Hash)์ ์๋ฆฌ
- ์์)
- ํน์ ํ ๊ฐ
n
์ด ์
๋ ฅ๋์์ ๋ 10์ ๋๋ ๊ฐ์ Key
๋ก ์ ๊ทผ

- ํน์ ํ ๊ฐ(Value)๋ฅผ ์ฐพ๊ณ ์ ํ ๋๋ ๊ทธ ๊ฐ์ ํค(Key)๋ก ์ ๊ทผํ ์ ์๋ค
- ์ผ๋ฐ์ ์ผ๋ก ํด์ ํจ์๋ ๋ชจ๋ ๋ฑ์ ์ํ์ ์ฐ์ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฏ๋ก
O(1)
๋ง์ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค
โ๏ธ ํด์(Hash)์ ์ถฉ๋
- ํด์ ํจ์์ ์
๋ ฅ ๊ฐ์ผ๋ก๋ ์ด๋ ํ ๊ฐ ๋ฑ ๋ชจ๋ ๋ค์ด๊ฐ ์ ์์ง๋ง
- ํด์ ํจ์๋ฅผ ๊ฑฐ์ณ ์์ฑ๋๋ ํค(Key)์ ๊ฒฝ์ฐ์ ์๋ ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ํค(Key) ์ค๋ณต์ด ๋ฐ์ํ ์ ์๋ค
- ํด์ ํ
์ด๋ธ์์ ํค(Key)๊ฐ ์ค๋ณต๋๋ ๊ฒฝ์ฐ ์ถฉ๋(Collision)์ด ๋ฐ์ํ๋ค๊ณ ํํํ๋ค

โ๏ธ ํด์ฑ(Hashing)
- ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋๋์
๋ฒ(Division Method)์ด ๊ฐ์ฅ ๋ง์ด ํ์ฉ๋๋ค
- ์
๋ ฅ ๊ฐ์, ๋ฐ์ด๋ธ์ ํฌ๊ธฐ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ํค(Key)๋ก ์ด์ฉํ๋ ๋ฐฉ์
- ํ
์ด๋ธ์ ํฌ๊ธฐ๋ ์์(Prime Number)๋ก ์ค์ ํ๋ ๊ฒ์ด ํจ์จ์ฑ์ด ๋๋ค
2๏ธโฃ ์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅํ ์ ์๋ค
1) ํด์ ํ
์ด๋ธ์ ๋ค๋ฅธ ์์น์ ์ ์ฅ
: ์ถฉ๋์ ๋ฐ์์ํค๋ ํญ๋ชฉ์ ํด์ ํ
์ด๋ธ์ ๋ค๋ฅธ ์์น์ ์ ์ฅ
- ์ ํ ์กฐ์ฌ๋ฒ, ์ด์ฐจ ์กฐ์ฌ๋ฒ ๋ฑ
(1) ์ ํ ์กฐ์ฌ๋ฒ
- ํด๋น ์๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๊ทธ ๋ค์ ์๋ฆฌ์ ๋ฐ์ดํฐ ์ถ๊ฐ
- ๊ทธ ๋ค์ ์๋ฆฌ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ ๊ทธ ๋ค์ ์๋ฆฌ์ ์ถ๊ฐ

- ์ ํ ์กฐ์ฌ๋ฒ์ ๋จ์
- ์ถฉ๋์ด ๋ฐ์ํ๊ธฐ ์์ํ๋ฉด, ์ ์ฌํ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ผ๋ฆฌ ์๋ก ๋ฐ์ง๋๋ ์ง์ค ๊ฒฐํฉ ๋ฌธ์ ๊ฐ ์กด์ฌ
- [ํด์ ํ
์ด๋ธ์ ํฌ๊ธฐ]๊ฐ ๋น์ฝ์ ์ผ๋ก ํฌ๋ค๋ฉด, ๋ค์ ๋งํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์๋ชจํ๋ค๋ฉด ์ถฉ๋์ด ์ ๊ฒ ๋ฐ์ํ๋ฏ๋ก ๋งค์ฐ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ ์๋๋ฅผ ๊ฐ์ง ์ ์์ง๋ง
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ, ํด์ ํ
์ด๋ธ์ ํฌ๊ธฐ๋ ํ์ ์ ์ด๋ฏ๋ก ์ถฉ๋์ด ์ต๋ํ ์ ๊ฒ ๋ฐ์ํ๋๋ก ํด์ผํ๋ค
(2) ์ด์ฐจ ์กฐ์ฌ๋ฒ
- ์ ํ ์กฐ์ฌ๋ฒ์ ์ฝ๊ฐ ๋ณํํ ํํ๋ก ํค ๊ฐ์ ์ ํํ ๋ ์์ ์ ๊ณฑ์๋ฅผ ๋ํด ๋๊ฐ๋ ๋ฐฉ์
- ํด๋น ์๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด 1์ ๊ณฑํ ๊ฐ์ ๋ํ ์์น์ ๋ฐ์ดํฐ ์ถ๊ฐ
- ๋ ํด๋น ์๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด 2์ ๊ณฑํ ๊ฐ์ ๋ํ ์์น์ ๋ฐ์ดํฐ ์ถ๊ฐ

๐น ์กฐ์ฌ๋ฒ์ ํ
์ด๋ธ ํฌ๊ธฐ ์ฌ์ค์
- ์ผ๋ฐ์ ์ผ๋ก ์ ํ ์กฐ์ฌ๋ฒ, ์ด์ฐจ ์กฐ์ฌ๋ฒ ๋ฑ์ ์กฐ์ฌ๋ฒ์์ ํ
์ด๋ธ์ด ๊ฐ๋ ์ฐจ๊ฒ ๋๋ฉด ํ
์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ํ์ฅํ์ฌ ๊ณ์ํด์ ํด์ ํ
์ด๋ธ์ ์ ์งํ ์ ์๋๋ก ํ๋ค
2) ๋ฒํท(Bucket)์ ์ฌ๋ฌ ๊ฐ์ ํญ๋ชฉ์ ์ ์ฅ
: ํด์ ํ
์ด๋ธ์ ํ๋์ ๋ฒํท(Bucket)์ ์ฌ๋ฌ ๊ฐ์ ํญ๋ชฉ์ ์ ์ฅ
(3) ์ฒด์ด๋(Chaining)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํด ํน์ ํ ํค๋ฅผ ๊ฐ์ง๋ ํญ๋ชฉ๋ค์ ์ฐ๊ฒฐํ์ฌ ์ ์ฅ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ์ฉ์ด
- ํ
์ด๋ธ ํฌ๊ธฐ ์ฌ์ค์ ๋ฌธ์ ๋ ๋์ ํ ๋น์ ํด๊ฒฐ ๊ฐ๋ฅํ์ง๋ง
- ๋์ ํ ๋น์ ์ํ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์์๋๋ค๋ ๋จ์ ์ด ์๋ค

โจ tl;dr
- ํด์(Hash)๋ ์ด๋ก ์ ์ผ๋ก ๋ฐ์ดํฐ์ ์ฝ์
๊ณผ ์ญ์ ์ ์์ด์
๐(1)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค
- ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ ๋ฐ ์ ๋ณด๋ณด์ ๊ด๋ จ ๋ชจ๋ ๋ฑ์์ ๊ต์ฅํ ๋ค์ํ๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค
์๊ฐ๋ณต์ก๋: ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์
๋ ฅ์ ํจ์ ๊ด๊ณ.
์ปดํจํฐ๊ณผํ์์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ์
๋ ฅ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๊ธธ์ด์ ํจ์๋ก์ ์๋ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ทจํด ์๊ฐ์ ์ ๋ํํ๋ ๊ฒ์ ์๋ฏธ