특정한 데이터를 레이블링하여 저장하는 컨테이너를 hash table이라고 한다. 문자 A와 문자 B를 서로 다르게 레이블링하여 저장하는 컨테이너가 그 예이다. A의 Ascill 코드는 65이고 B는 66이다. 이들 문자를 10으로 나눈 나머지값에 해당하는 인덱스에 문자를 저장하면 나중에 A를 찾을 때 나머지 연산으로 저장되어있는 위치를 빠르게 알 수 있다.
class HashTable:
def __init__(self) -> None:
self.capacity = 10;
self.basket = [""] * self.capacity
def Add(self, alpha : str) -> None:
self.basket[ord(alpha) % self.capacity] = alpha
def Find(self, alpha : str) -> str:
return self.basket[ord(alpha) % self.capacity]
def PrintTable(self) -> None:
print(self.basket)
hash = HashTable()
hash.Add("A")
hash.Add("B")
print("Find A : {0}".format(hash.Find("A")))
hash.PrintTable()
*********************
Find A : A
['', '', '', '', '', 'A', 'B', '', '', '']
알맞는 basket에 넣기위해 10으로 나누는 로직을 hash함수라고 부른다.
alphabet char 문자는 숫자로 쉽게 변환이 가능하지만 string이나 object인 경우는 어떻게 할까?
문자와 같다. string 이나 object도 대표할 수 있는 정수로 바꾸고 hash함수를 사용하여 적당한 basket에 저장하면 된다.
파이썬 기초 문법 정리 (0) | 2022.01.04 |
---|---|
HashTable 기초 (0) | 2022.01.03 |
Queue(Circular Queue) (0) | 2021.08.05 |
Queue 기초 (0) | 2021.08.03 |
링크드 리스트(LRU cache) (0) | 2021.08.02 |
댓글 영역