/ PROGRAMING, PYTHON

Hash example 1

해시 Hash 예시 1

기본적으로 ChatGPT를 이용하여 틀을 잡고 만든 것

함수

  • 해시 테이블 생성
    • 크기가 100인 배열 초기화 __init__
  • 해시 코드 생성 hash_function
    • 각 문자의 아스키 코드 값을 합산
  • 삽입 함수
    • 해시테이블의 주어진 해시 코드값을 인덱스로 연결리스트를 이용하여 삽입
  • 검색 함수
    • 해시테이블에서 주어진 해시 코드값으로 인덱스로 연결리스트를 타고 주어진 키 값을 비교하면서 검색
# 해시 테이블 구현
class HashTable:
    # 크기가 100인 해시테이블 초기화되는 함수
    def __init__(self):
        self.size = 100 # 해시 테이블 크기
        self.table = [None] * self.size  
    
    # key 값이 들어오면 해시코드를 알려주는 함수
    def hash_function(self, key):
        # 각 문자의 아스키 코드 값을 합산하여 해시 코드 생성
        hash_code = sum([ord(char) for char in key])
        return hash_code % self.size # 크기로 나눈 나머지를 해시 코드로 사용
    
    # key값에 해당되는 코드로 해시 테이블에 연결리스트로 (key, value)값을 넣어준다.(없으면 연결리스트 생성하고 넣어줌)
    def insert(self, key, value):
        hash_code = self.hash_function(key)
        if not self.table[hash_code]:
            self.table[hash_code] = [] # 연결 리스트 생성
        self.table[hash_code].append((key,value)) # 연결 리스트에 데이터 삽입
        
    # 주어진 key값에 해당하는 값을 찾는 함수
    # 해당 key의 해시코드로 해시테이블에서 값을 찾는다. (있을 때만 없으면 None 출력)
    def search(self, key):
        hash_code = self.hash_function(key)
        if self.table[hash_code]:
            for k,v in self.table[hash_code]:
                if k == key:
                    return v
        return None # 데이터를 찾을 수 없는 경우 None 반환
# 예시
hash_table = HashTable()
hash_table.insert('apple', 10)
hash_table.insert('banana', 20)
hash_table.insert('orange', 30)

print(hash_table.search('apple')) # 10
print(hash_table.search('grape')) # None
10
None