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