본문 바로가기
TIL🔥/코딩테스트

[항해99클럽] Java 비기너_Day 9 Design HashMap

by hk713 2025. 4. 10.

오늘의 문제 >> https://leetcode.com/problems/design-hashmap/description/

 

[ 생각 흐름 ] 

배열을 미리 만들어두고 배열의 index를 key값으로 사용하면 될 듯?

 

[ JAVA ] 

class MyHashMap {
    int map[];

    public MyHashMap() {
        map = new int[1000001];
        Arrays.fill(map, -1);
    }
    
    public void put(int key, int value) {
        map[key] = value;
    }
    
    public int get(int key) {
        return map[key];
    }
    
    public void remove(int key) {
        map[key] = -1;
    }
}

 

 

 

이렇게 구현하면 간단하게 성공인데..!

사실 찐으로 만들려면 링크드리스트를 써야 되는 것 같다

 

[ Java ] 

import java.util.*;

class MyHashMap {
    private final int SIZE = 1000; // 배열의 크기 (버킷 수)
    private List<Node>[] map;

    public MyHashMap() {
        map = new List[SIZE];
        for (int i = 0; i < SIZE; i++) {
            map[i] = new LinkedList<>(); // 각 칸에 연결 리스트를 초기화
        }
    }

    public void put(int key, int value) {
        int index = key % SIZE; // 해시 함수
        for (Node node : map[index]) {
            if (node.key == key) {
                node.value = value; // 이미 존재하면 업데이트
                return;
            }
        }
        map[index].add(new Node(key, value)); // 없으면 추가
    }

    public int get(int key) {
        int index = key % SIZE;
        for (Node node : map[index]) {
            if (node.key == key) return node.value;
        }
        return -1; // 없으면 -1
    }

    public void remove(int key) {
        int index = key % SIZE;
        Iterator<Node> iter = map[index].iterator();
        while (iter.hasNext()) {
            Node node = iter.next();
            if (node.key == key) {
                iter.remove();
                return;
            }
        }
    }
}

댓글