티스토리 뷰

https://leetcode.com/problems/design-hashmap/

1. 문제분석
HashMap 직접 구현 -> MyHashMap 클래스 -> 빈 맵 생성
-> void put(int key, int value) -> 삽입, 이미 존재하면 덮어쓰기
-> int get(int key) -> 맵핑된 value, 없으면 -1 리턴
-> void remove(key) -> 존재하면 제거
특이사항은 없고 그냥 내장 클래스 구현 문제, 이터러블 구현은 필요없어 보임
key, value 값 범위는 0~100만, 오퍼레이션은 최대 10,000개

2. 풀어보기
['MyHashMap','put','put','get','get','put','get','remove','get']
[[],[1,1],[2,2],[1],[3],[2,1],[2],[2],[2]]
-> [null,null,null,1,-1,null,1,null,-1]

3. 슈도코드
사실 이 코드 그대로 써도 Accepted 뜸 -> 언어 내장 해시를 사용하지 않고 구현하는 문제 

class MyHashMap {
  private map;
  constructor() {
    this.map = new Map<number, number>()
  }
  put(key: number, value: number): void {
    this.map.set(key, value);
  }
  get(key: number): number {
    return this.map.get(key) ?? -1;
  }
  remove(key: number): void {
    this.map.delete(key);
  }
}

 

4. 구현코드

class MyHashMap; // 해시 구현은 https://ha2el.tistory.com/26 참고

 

5. 풀이회고

기본적인 해시테이블 자료구조를 구현해보는 문제였다.

이해하고 있는 자바 해시맵을 기본으로 하되, 해시충돌은 리스트 체이닝으로만 구현했다.

이런 코드를 쓸 일이 있을 지는 모르겠지만, 혹시라도 응용할 일이 생기면 해당 코드 기반으로 구현해보자.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함