2024. 1. 8. 18:09ใCS - Roadmap.sh/1. Data structures
Data structures (with python) - 7. Hash Table
๐ก Hash Table, Map, HashMap, Dictionary or Associative are all the names of the same data structure. It is one of the most commonly used data structures.
ํด์ ํ ์ด๋ธ, ๋งต, ํด์๋งต, ์ฌ์ ๋๋ ์ฐ๊ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ชจ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ด๋ฆ์ ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค.
ํด์ฌ ํ ์ด๋ธ(Hash Table)์ ํค(Key)๋ฅผ ๊ฐ(Value)์ ์ฐ๊ฒฐํ์ฌ, ํ๋์ ํค๊ฐ 0 ๋๋ 1๊ฐ์ ๊ฐ๊ณผ ์ฐ๊ด๋ ์ ์๋ ๊ตฌ์กฐ ์ ๋๋ค.
์ด๋ฐ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ์ ์ฅ, ๊ฒ์, ์ญ์ ๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋๋ก ํด์ค๋ค.
ํด์ ํ ์ด๋ธ์ ํต์ฌ ์์๋ ํด์ ํจ์(Hash Function)์ ๋๋ค. ํด์ ํจ์๋ ์์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ก ๋ฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ํค๋ฅผ ํด์ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ก ๋ณํํ๊ณ , ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ์กฐํ ํฉ๋๋ค.
In Python
Python ์์๋ ๋์ ๋๋ฆฌ(Dictionary)๋ฅผ ์ฌ์ฉํ์ฌ ํด์ ํ ์ด๋ธ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๋์ ๋๋ฆฌ๋ ํค-๊ฐ ์์ ์ ์ฅํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ๋ด๋ถ์ ์ผ๋ก๋ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
# ๋์
๋๋ฆฌ ์์ฑ
hash_table = {}
# ๊ฐ ์ถ๊ฐ
hash_table['apple'] = '์ฌ๊ณผ'
hash_table['banana'] = '๋ฐ๋๋'
hash_table['orange'] = '์ค๋ ์ง'
# ๊ฐ ์กฐํ
print(hash_table['apple']) # '์ฌ๊ณผ' ์ถ๋ ฅ
print(hash_table['banana']) # '๋ฐ๋๋' ์ถ๋ ฅ
# ๊ฐ ๋ณ๊ฒฝ
hash_table['apple'] = '์ ํ'
print(hash_table['apple']) # '์ ํ' ์ถ๋ ฅ
# ๊ฐ ์ญ์
del hash_table['orange']
print(hash_table) # {'apple': '์ ํ', 'banana': '๋ฐ๋๋'} ์ถ๋ ฅ
ํ๊ท ์ ์ผ๋ก O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅด ๊ฐ์ง๋ค.
์ฆ, ํด์ ํ ์ด๋ธ์ ํฌ๊ธฐ์ ์๊ด์์ด ๊ฑฐ์ผ ใ ฃ์ผ์ ํ ์๊ฐ ๋ด์ ์ํ ๋ ์ ์์ต๋๋ค.
์ด๊ฒ์ด, ํด์ ํ ์ด๋ธ์ด ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ ๊ด๋ฆฌํ ์ ์๋ ์ด์ ์ค ํ๋์ ๋๋ค.
ํ์ง๋ง ํด์ํ ์ด๋ธ์๋
"ํด์ ์ถฉ๋" ์ด๋ผ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๋ ์๋ก ๋ค๋ฅธ ํค๊ฐ ๊ฐ์ ํด์ ๊ฐ์ ๊ฐ์ง ๋ ๋ฐ์ํฉ๋๋ค.
์ด๋ ์๋ก ๋ค๋ฅธ ํค๊ฐ ๊ฐ์ ํด์ ๊ฐ์ ๊ฐ์ง ๋ ๋ฐ์ํ๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ(์คํ ํด์ฑ, ์ฒด์ด๋ ๋ฑ) ์ด ์์ต๋๋ค.
๋คํํ๋ Python์ ๋์ ๋๋ฆฌ๋ ๋ด๋ถ์ ์ผ๋ก ์ด๋ฌํ ํด์ ์ถฉ๋์ ๊ด๋ฆฌํด์ฃผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์ฒ๋ฆฌํ ํ์๋ ์๋ค.
(appendix
java ์ HashMap, JavaScript์ ๊ฐ์ฒด, Ruby์ ํด์ ๋ฑ๋ ๋ด๋ถ์ ์ผ๋ก ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ๊ณ , ๋๋ถ๋ถ ํด์ ์ถฉ๋์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค๋ค.
C++์ std::unordered_map ์ด๋ Java์ HashMap ์ฒ๋ผ ํด์ ์ถฉ๋์ ์ฒ๋ฆฌํ๋๋ฐ ์ปค์คํฐ๋ง์ด์ง์ ์ ์ ๊ฐ ํ ์ ์๋ค.
๋ ๋ฎ์ ์์ค์ ์ธ์ด( ์๋ฒ ๋๋ ์์คํ , ์ปค์คํ ํ๋์จ์ด ๋ฑ๋ฑ) ์์๋ ์ง์ ํด์ ํจ์๋ฅผ ์ ํํ๊ณ ์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์์ฑํด์ผ ํ๋ค.)
'CS - Roadmap.sh > 1. Data structures' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Data structures (with python) - 8.Tree - 8.2 Binary Search Tree (0) | 2024.01.09 |
---|---|
Data structures (with python) - 8.Tree - 8.1 Binary Tree (0) | 2024.01.09 |
Data structures (with python) - 6. Queue (2) | 2024.01.08 |
Data structures (with python) - 5. Stack (1) | 2024.01.07 |
Data structures (with python) - 4. Linked List (0) | 2024.01.06 |