본문 바로가기

computer/algorithm

해시테이블 구현 - 파이썬

※ 이 자료는 공부를 목적으로 출처에 기입한 여러 자료를 단순히 정리한 것입니다.
※ 출처에 기입한 채널의 코드를 복습하기 위해 재구현하였습니다.

 

import collections

class hashMap:
    def __init__(self):
        self.size = 1000
        self.table = collections.defaultdict(ListNode)

    def put(self, key: int, value: int) -> None:
        index = key % self.size
        if self.table[index].value is None:
            self.table[index] = ListNode(key, value)
            return

        p = self.table[index]
        while p:
            if p.key == key:
                p.value = value
                return
            if p.next is None:
                break
            p = p.next
        p.next = ListNode(key, value)

    def get(self, key: int) -> int:
        index = key % self.size
        if self.table[index].value is None:
            return -1

        p = self.table[index]
        while p:
            if p.key == key:
                return p.value
            p = p.next
        return -1

    def remove(self, key: int) -> None:
        index = key % self.size
        if self.table[index].value is None:
            return

        p = self.table[index]
        if p.key == key:
            self.table[index] = ListNode() if p.next is None else p.next
            return

        prev = p
        while p:
            if p.key == key:
                prev.next = p.next
                return
            prev, p = p, p.next


class ListNode:
    def __init__(self, key=None, value=None):
        self.key = key
        self.value = value
        self.next = None


if __name__=='__main__':
    myHash = hashMap()
    myHash.put(1234, 9010291409013)
    myHash.put(2234, 132)

    print(myHash.get(1234))

파이썬 알고리즘 인터뷰 11장 해시 테이블, 박상길

'computer > algorithm' 카테고리의 다른 글

백준1260 - DFS와 BFS  (0) 2021.11.28
P NP 문제  (0) 2021.08.16
해시테이블 구현 - 자바  (0) 2020.08.10
해시테이블 개념  (0) 2020.08.07
Python 리스트의 편리함  (0) 2020.02.13