상세 컨텐츠

본문 제목

Hash Table 만들기

똑똑한 개발/Algorithm 과 Data Structure

by 성댕쓰 2022. 1. 3. 22:11

본문

특정한 데이터를 레이블링하여 저장하는 컨테이너를 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에 저장하면 된다.

 

'똑똑한 개발 > Algorithm 과 Data Structure' 카테고리의 다른 글

파이썬 기초 문법 정리  (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

관련글 더보기

댓글 영역