코린이의 소소한 공부노트

[LeetCode/Easy] 706. Design HashMap 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 706. Design HashMap

무지맘 2023. 5. 30. 00:40

목표: 해시에 관련된 빌트인 라이브러리를 사용하지 않고 해시맵 구현하기

- 생성자

- put(), get(), remove()

 

1. Input

1) 생성자: 없음

2) put(): int key, int value

3) get(): int key

4) remove(): int key

 

2. Output

1) put(): void. 해시맵에 (key, value) 추가. 만약 key가 있다면 값을 value로 변경

2) get(): key에 해당하는 value 반환. 만약 없다면 -1을 반환

3) remove(): void. key가 있다면 (key, value) 삭제

 

3. Constraint

1) 0 <= key, value <= 10^6

2) 메서드는 최대 10^4번까지 호출될 수 있다.

 

4. Example

MyHashMap myHashMap = new MyHashMap();
myHashMap.put(1, 1); // map = [[1,1]]
myHashMap.put(2, 2); // map = [[1,1], [2,2]]
myHashMap.get(1);    // return 1, map = [[1,1], [2,2]]
myHashMap.get(3);    // return -1(없음), map = [[1,1], [2,2]]
myHashMap.put(2, 1); // map = [[1,1], [2,1]](변경)
myHashMap.get(2);    // map = [[1,1], [2,1]]
myHashMap.remove(2); // [2,1]삭제, map = [[1,1]]
myHashMap.get(2);    // return -1(없음), map = [[1,1]]

 

5. Code

1) 첫 코드(2023/05/30)

class MyHashMap {
    ArrayList<Integer> klist, vlist;
    public MyHashMap() {
        klist = new ArrayList<>();
        vlist = new ArrayList<>();
    }
    
    public void put(int key, int value) {
        if(!klist.contains(key)){
            klist.add(key);
            vlist.add(value);
        } else
            vlist.set(klist.indexOf(key), value);
    }
    
    public int get(int key) {
        if(!klist.contains(key))
            return -1;
        else
            return vlist.get(klist.indexOf(key));
    }
    
    public void remove(int key) {
        if(klist.contains(key)){
            int i = klist.indexOf(key);
            klist.remove(i);
            vlist.remove(i);
        }
    }
}

/**
 * Your MyHashMap object will be instantiated and called as such:
 * MyHashMap obj = new MyHashMap();
 * obj.put(key,value);
 * int param_2 = obj.get(key);
 * obj.remove(key);
 */

- 6%, 94%