ํฐ์คํ ๋ฆฌ ๋ทฐ
ํด์๋?
- Hash ํน์ HashTable์ ํค๋ฅผ ๊ฐ์ ๋งคํํ ์ ์๋ ๊ตฌ์กฐ์ธ, ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
- ์์์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ(Key)๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฐ์ดํฐ(Value)๋ก ๋ณํ์์ผ ์ ์ฅ
- ํค์ ๋ํ ํด์๊ฐ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํ๊ณ ํค-๊ฐ ์์ ๊ฐฏ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ associate array
- ํค์ ๋ํ ํด์๊ฐ์ ๊ตฌํ๋ ๊ณผ์ ์ hashing(ํด์ฑ)์ด๋ผ ํ๊ณ , ์ด๋ ์ฌ์ฉํ๋ ํจ์๋ฅผ ํด์ํจ์
- ํด์๊ฐ ์์ฒด๋ฅผ index๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๊ท ๋ณต์ก๋๊ฐ O(1)๋ก ๋งค์ฐ ๋น ๋ฅด๋ค
- ๋ณด์์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
ํด์ ํจ์๋?
- ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด, ์์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ํ์ ์ฐ์ฐ์ ํตํด ๊ณ ์ ๋ ๊ธธ์ด์ ํ ์ดํฐ๋ก ๋งคํํ๋ ํจ์๋ก, ํด์ ํจ์์ ์ํด ์ป์ด์ง๋ ๊ฐ์ ํด์์ฝ๋, ํด์๋ผ ํฉ๋๋ค.
ํด์ ํ ์ด๋ธ
- ํค์ ๊ฐ์ ๋งคํํด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค.
- ํด์ํจ์๋ก ์ป์ ํดํค๋ฅผ ํค๋ก ํ์ฉํ์ฌ index๋ก ์ฌ์ฉํ๊ณ , ํด๋น index์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ฌ ํจ์จ์ ์ธ ๊ฒ์์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ๋๊ธฐํ๋ฅผ ์ง์
- Key, value์ Null๊ฐ์ ํ์ฉํ์ง ์์
- ์ ์ ์์์ผ๋ก ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
- ํ๋ ๋์คํฌ๋ ํด๋ผ์ฐ๋์ ์กด์ฌํ๋ ๋ฌดํํ ๋ฐ์ดํฐ๋์ ์ ํํ ๊ฐ์์ ํด์๊ฐ์ผ๋ก ๋งคํํ์ฌ ์์ ๋ฉ๋ชจ๋ฆฌ๋ก๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ
ํด์์ ์ถฉ๋ (Collision ํ์)
- ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด, ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ํด์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋์ด ์ถฉ๋์ด ๋ฐ์ํ๊ธฐ๋ ํฉ๋๋ค.
: ํด์ ํ ์ด๋ธ์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๊ฒฐ๊ตญ index์ ์ถฉ๋
์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
1. Separate Chaining
- Key์ ๋ํ index๊ฐ ๊ฐ๋ฅดํค๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ LinkedList๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์
- index๋ก ์ธํด ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๊ทธ index๊ฐ ๊ฐ๋ฅดํค๋ LinkedList์ ๋ ธ๋๋ฅผ ์ถ๊ฐ
** JDK 1.8์ ๊ฒฝ์ฐ์ index ๋ ธ๋๊ฐ 8์ดํ๋ฉด LinkedList, ์ด๊ณผํ๋ฉด ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ์ฅํ์ฌ ํ์ ์ฑ๋ฅ์ ๊ฐ์
2. Open Addressing (๊ฐ๋ฐฉ์ฃผ์๋ฒ)
- ํด์ ์ถฉ๋์ด ์ผ์ด๋๋ฉด ๋ค๋ฅธ ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ์
1) ์ ํ ํ์ : ํด์์ถฉ๋์ ๋ค์ ๋ฒ์ผ, ํน์ ๋ช ๊ฐ๋ฅผ ๊ฑด๋๋ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์
2) ์ ๊ณฑ ํ์ : ํด์์ถฉ๋ ์ ์ ๊ณฑ๋งํผ ๊ฑด๋๋ด ๋ฒ์ผ์ ๋ฐ์ดํฐ ์ฝ์
3) ์ด์ค ํด์ : ํด์์ถฉ๋ ์ ๋ค๋ฅธ ํด์ํจ์๋ฅผ ํ ๋ฒ ๋ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉ
- ์ฒด์ด๋์ฒ๋ผ ํฌ์ธํฐ๊ฐ ํ์์๊ณ , ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ ์ธ ์ถ๊ฐ์ ์ธ ์ ์ฅ๊ณต๊ฐ๋ ํ์์์
- ์ฝ์ , ์ญ์ ์ ์ค๋ฒํค๋๊ฐ ์ ์
- ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ์ ์ ๋ ๋ ์ ๋ฆฌํจ
** ์ค์ ํด์ํจ์๊ฐ ๋ณด์์ ์ฌ์ฉ๋๋ ์์์ธ HMAC SHA-256
http://sunphiz.me/wp/archives/1104
HMAC SHA-256 – Dog๋ฐ์
HMAC(Hash-based Message Authentication Code, ํด์๊ธฐ๋ฐ ๋ฉ์์ง ์ธ์ฆ ์ฝ๋)์ SHA(Secure Hash Algorithm)-256 ์ฝ์์ ์กฐํฉ์ผ๋ก, ์ธ์ฆ ์ฝ๋(์ฌ๊ธฐ์๋ MAC)๋ฅผ ํด์(์ฌ๊ธฐ์๋ SHA) ๊ฐ์ ์ด์ฉํด ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. RFC 210
sunphiz.me
[์ฐธ๊ณ ]
https://power-overwhelming.tistory.com/42
[์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ํด์(Hash) ๋?
Hash ๊ฐ๋ ์์์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ(Key)๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฐ์ดํฐ(Value)๋ก ๋ณํ์์ผ ์ ์ฅํ๋ ๊ฒ ํค์ ๋ํ ํด์๊ฐ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํ๊ณ ํค-๊ฐ ์์ ๊ฐฏ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ a
power-overwhelming.tistory.com
https://ablue-1.tistory.com/68
[์๋ฃ๊ตฌ์กฐ] ํด์(Hash)๋ ๋ฌด์์ธ๊ฐ
์ค๋์ ๋ณด์์์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ํด์ํจ์์ ๊ทผ๋ณธ์ธ ์๋ฃ๊ตฌ์กฐ ํด์๋ฅผ ๋ฐฐ์๋ณด๊ฒ ๋ค ๐ ํด์ ํ ์ด๋ธ์ด๋ ์ปดํจํ ์์ ํค๋ฅผ ๊ฐ์ ๋งคํํ ์ ์๋ ๊ตฌ์กฐ์ธ, ์ฐ๊ด ๋ฐฐ์ด ์ถ๊ฐ์ ์ฌ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ
ablue-1.tistory.com
ํด์ํจ์์ ํด์์ถฉ๋
ํด์ํจ์๋ key๊ฐ ๋ค์ด์ค๋ฉด ๋ฌด์์๋ก ํด์๊ฐ์ ์์ฑํ ํ ๊ทธ ๊ฐ์ ์ฃผ์์ผ์ key - value๋ฅผ ์ ์ฅํฉ๋๋ค. ํด์ ํ ์ด๋ธ ์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ์์ ์ฌ์ฉ๋๋ฉฐ, ๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ๊ฒ์ผ๋ก ๋ง์ด ์ฐ์ ๋๋ค.
velog.io
GitHub - WooVictory/Ready-For-Tech-Interview: ๐ป ์ ์ ๊ฐ๋ฐ์๋ก์ ์ค๋น๋ฅผ ํ๊ธฐ ์ํด ์ง์์ ์ ๋ฆฌํ๋ ๊ณต๊ฐ
๐ป ์ ์ ๊ฐ๋ฐ์๋ก์ ์ค๋น๋ฅผ ํ๊ธฐ ์ํด ์ง์์ ์ ๋ฆฌํ๋ ๊ณต๊ฐ ๐จ๐ป. Contribute to WooVictory/Ready-For-Tech-Interview development by creating an account on GitHub.
github.com
'CS > Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] Arrays vs LinkedList (0) | 2022.03.28 |
---|
- Total
- Today
- Yesterday
- map
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- ํ๋กํ ์ฝ
- http
- ์๊ณ ๋ฆฌ์ฆ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- TDD
- fp
- ์ด์์ฒด์
- ๋คํธ์ํฌ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค
- ๋ฐฑ์ค node.js
- Baekjoon
- ์ ์ญ ๋ณ์
- JavaScript
- ๋ฐฑ์ค javascript
- ๋์์ธ ํจํด
- ์ฝ๋ฉํ ์คํธ
- git
- ์ด๋ถํ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์นด์นด์ค ์ธํด
- ํฌํฌ์ธํฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฐ
- ํ๋กํผํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |