Guidelines

킀와 κ°’μœΌλ‘œ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” ν•΄μ‹œ ν…Œμ΄λΈ”

ν•΄μ‹œ ν…Œμ΄λΈ”(Hash Table)은 우편번호둜 μ£Όμ†Œλ₯Ό μ°ΎλŠ” κ²ƒμ²˜λŸΌ, ν‚€(Key)와 κ°’(Value)의 쌍으둜 데이터λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.

νŠΉμ • 데이터λ₯Ό 검색할 λ•Œ ν‚€λ₯Ό μ΄μš©ν•΄ 값을 λΉ λ₯΄κ²Œ 찾을 수 μžˆμ–΄ λŒ€μš©λŸ‰μ˜ 데이터λ₯Ό 효율적으둜 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

데이터λ₯Ό μ €μž₯ν•  λ–„λŠ” ν•΄μ‹œ ν•¨μˆ˜(Hash Function)λ₯Ό μ‚¬μš©ν•΄ 고유의 κ·œμΉ™μ— 따라 νŠΉμ • 숫자(ν•΄μ‹œ κ°’)λ₯Ό μƒμ„±ν•˜κ³ , 이 값을 μ΄μš©ν•΄ 데이터λ₯Ό μ €μž₯ν•  μœ„μΉ˜λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.


ν•΄μ‹œ ν…Œμ΄λΈ”μ€ μ–΄λ–»κ²Œ λ™μž‘ν• κΉŒμš”?

ν•΄μ‹œ ν…Œμ΄λΈ”μ€ ν‚€-κ°’(key-value) μŒμ„ μ €μž₯ν•˜λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.

ν•΄μ‹œ ν•¨μˆ˜λŠ” ν‚€λ₯Ό μž…λ ₯λ°›μ•„ 고유의 κ·œμΉ™μ— 따라 νŠΉμ • 숫자(ν•΄μ‹œ κ°’)λ₯Ό μƒμ„±ν•˜κ³ , 이 ν•΄μ‹œ 값을 μ‚¬μš©ν•΄ ν…Œμ΄λΈ”μ—μ„œ 데이터λ₯Ό μ €μž₯ν•  μœ„μΉ˜λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μž…λ ₯ 받은 λ°μ΄ν„°μ˜ 길이λ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 크기둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό ν•΄μ‹œ κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄μ‹œ ν•¨μˆ˜ μ˜ˆμ‹œ
def hash_function(key): table_size = 10 # λ°μ΄ν„°μ˜ 길이λ₯Ό ν…Œμ΄λΈ” 크기둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό ν•΄μ‹œ κ°’μœΌλ‘œ μ‚¬μš© return len(key) % table_size

예λ₯Ό λ“€μ–΄ "apple"μ΄λΌλŠ” ν‚€λ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 크기가 10인 ν•΄μ‹œ ν•¨μˆ˜μ— λ„£μœΌλ©΄, apple의 길이가 5μ΄λ―€λ‘œ 5 % 10 = 5κ°€ ν•΄μ‹œ κ°’μœΌλ‘œ λ°˜ν™˜λ©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ λ°˜ν™˜λœ ν•΄μ‹œ 값에 따라, ν•΄μ‹œ ν•¨μˆ˜λŠ” "apple"μ΄λΌλŠ” 킀와 그에 ν•΄λ‹Ήν•˜λŠ” 값을 ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 5번째 μœ„μΉ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.


νŒŒμ΄μ¬μ—μ„œ ν•΄μ‹œ ν…Œμ΄λΈ” κ΅¬ν˜„ν•˜κΈ°

νŒŒμ΄μ¬μ—μ„œλŠ” λ¦¬μŠ€νŠΈμ™€ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ κ°„λ‹¨ν•œ ν•΄μ‹œ ν…Œμ΄λΈ”μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°„λ‹¨ν•œ ν•΄μ‹œ ν…Œμ΄λΈ” κ΅¬ν˜„ 예제
class HashTable: # ν•΄μ‹œ ν…Œμ΄λΈ” μ΄ˆκΈ°ν™” def __init__(self, size): self.size = size self.table = [None] * size # ν‚€λ₯Ό μ‚¬μ΄μ¦ˆλ‘œ λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό ν•΄μ‹œ κ°’μœΌλ‘œ μ‚¬μš©ν•˜λŠ” ν•΄μ‹œ ν•¨μˆ˜ def hash_function(self, key): return hash(key) % self.size # 킀와 값을 ν•΄μ‹œ ν…Œμ΄λΈ”μ— μ €μž₯ def insert(self, key, value): index = self.hash_function(key) self.table[index] = value print(f"Key: {key} -> Index: {index}, Value: {value}κ°€ ν…Œμ΄λΈ”μ— μ €μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")

μ½”λ“œ μ„€λͺ…

  • HashTable 클래슀: ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ •μ˜ν•˜λŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€. __init__ λ©”μ„œλ“œμ—μ„œ ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 크기λ₯Ό μ„€μ •ν•˜κ³ , κ·Έ 크기만큼의 리슀트λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

  • hash_function λ©”μ„œλ“œ: 파이썬의 λ‚΄μž₯ hash ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ ν‚€λ₯Ό ν•΄μ‹œ κ°’μœΌλ‘œ λ³€ν™˜ν•˜κ³ , 이 값을 ν…Œμ΄λΈ” 크기둜 λ‚˜λˆ  μ €μž₯ν•  인덱슀λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.

  • insert λ©”μ„œλ“œ: 킀와 값을 λ°›μ•„ ν•΄μ‹œ ν…Œμ΄λΈ”μ— μ €μž₯ν•©λ‹ˆλ‹€. ν‚€λ₯Ό ν•΄μ‹œ ν•¨μˆ˜λ‘œ μ²˜λ¦¬ν•΄ λ‚˜μ˜¨ μΈλ±μŠ€μ— 값을 μ €μž₯ν•©λ‹ˆλ‹€.

  • search λ©”μ„œλ“œ: ν‚€λ₯Ό μ΄μš©ν•΄ ν•΄μ‹œ ν…Œμ΄λΈ”μ—μ„œ 값을 κ²€μƒ‰ν•©λ‹ˆλ‹€. ν•΄λ‹Ή ν‚€κ°€ μ €μž₯된 인덱슀λ₯Ό μ°Ύμ•„ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.


ν•΄μ‹œ ν…Œμ΄λΈ”μ€ μ–Έμ œ μ‚¬μš©λ˜λ‚˜μš”?

ν•΄μ‹œ ν…Œμ΄λΈ”μ€ 데이터λ₯Ό λΉ λ₯΄κ²Œ κ²€μƒ‰ν•˜κ³  μ €μž₯ν•  수 μžˆλŠ” 자료ꡬ쑰둜, λŒ€μš©λŸ‰ λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ μΊμ‹œ λ“±μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

Mission
0 / 1

ν•΄μ‹œ ν…Œμ΄λΈ”μ€ 킀와 κ°’μ˜ 쌍으둜 데이터λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€.

O
X

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result