[99클럽 코테 스터디 11일차 TIL] LeetCode 706. Design HashMap 해설 및 풀이 (Java)

2025. 4. 10. 19:36·Study/코딩 테스트
반응형

 

706. Design HashMap

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

 


Design a HashMap without using any built-in hash table libraries.

Implement the MyHashMap class:

MyHashMap() initializes the object with an empty map.
void put(int key, int value) inserts a (key, value) pair into the HashMap. If the key already exists in the map, update the corresponding value.
int get(int key) returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key.
void remove(key) removes the key and its corresponding value if the map contains the mapping for the key.
 

Example 1:

Input
["MyHashMap", "put", "put", "get", "get", "put", "get", "remove", "get"]
[[], [1, 1], [2, 2], [1], [3], [2, 1], [2], [2], [2]]
Output
[null, null, null, 1, -1, null, 1, null, -1]

Explanation
MyHashMap myHashMap = new MyHashMap();
myHashMap.put(1, 1); // The map is now [[1,1]]
myHashMap.put(2, 2); // The map is now [[1,1], [2,2]]
myHashMap.get(1);    // return 1, The map is now [[1,1], [2,2]]
myHashMap.get(3);    // return -1 (i.e., not found), The map is now [[1,1], [2,2]]
myHashMap.put(2, 1); // The map is now [[1,1], [2,1]] (i.e., update the existing value)
myHashMap.get(2);    // return 1, The map is now [[1,1], [2,1]]
myHashMap.remove(2); // remove the mapping for 2, The map is now [[1,1]]
myHashMap.get(2);    // return -1 (i.e., not found), The map is now [[1,1]]
 

Constraints:

0 <= key, value <= 106
At most 104 calls will be made to put, get, and remove.

 

한글 해석

 

더보기

내장된 해시 테이블 라이브러리를 사용하지 않고 HashMap을 디자인합니다.

클래스 를 구현합니다 MyHashMap.

MyHashMap()빈 맵으로 객체를 초기화합니다.
void put(int key, int value)(key, value)HashMap에 쌍을 삽입합니다 . key맵에 이미 쌍이 있으면 해당 쌍을 업데이트합니다 value.
int get(int key)value지정된 .가 매핑되는 대상을 반환하거나 key, -1이 맵에 .에 대한 매핑이 없는 경우 반환합니다 key.
void remove(key)맵에 .에 대한 매핑이 포함되어 있으면 해당 매핑 key과 해당 항목을 제거합니다 .valuekey
 

예시 1:

입력
["MyHashMap", "넣다", "넣다", "가져오기", "넣다", "가져오기", "제거", "가져오기"]
[[], [1, 1], [2, 2], [1], [3], [2, 1], [2], [2], [2]]
산출
[null, null, null, 1, -1, null, 1, null, -1]

설명
내 해시맵 myHashMap = 새로운 내 해시맵();
myHashMap.put(1, 1); // 맵은 이제 [[1,1]]입니다.
myHashMap.put(2, 2); // 맵은 이제 [[1,1], [2,2]]입니다.
myHashMap.get(1); // return 1, 이제 맵은 [[1,1], [2,2]]입니다.
myHashMap.get(3); // -1을 반환합니다(즉, 찾을 수 없음). 이제 맵은 [[1,1], [2,2]]입니다.
myHashMap.put(2, 1); // 맵은 이제 [[1,1], [2,1]]입니다(즉, 기존 값을 업데이트합니다)
myHashMap.get(2); // return 1, 이제 맵은 [[1,1], [2,1]]입니다.
myHashMap.remove(2); // 2에 대한 매핑을 제거합니다. 이제 맵은 [[1,1]]입니다.
myHashMap.get(2); // -1을 반환합니다(즉, 찾을 수 없음). 이제 맵은 [[1,1]]입니다.
 

제약 조건:

0 <= key, value <= 106
최대 통화는 , , 및 로 이루어집니다 .104putgetremove


문제 유형

배열 Array
해시 테이블 Hash Table
연결 리스트 Linked List
디자인 패턴 Design
해시 함수 Hash Function

 

풀이 방법 도출

이 문제는 내장 해시맵 라이브러리를 사용하지 않고 MyHashMap 클래스를 구현해야 합니다.

put, get, remove 기능을 지원해야 한다.

  1. 키를 인덱스로 사용하고, 값을 배열의 해당 위치에 저장한다.
  2. 값을 제거할 때는 특수한 값 -1을 넣어 "없음"을 표현한다.

 

시간 복잡도

  • O(1)

 

핵심 코드 삽입 및 설명

 

import java.util.*;

class MyHashMap {
    // 배열을 선언
    int[] map;

    // 생성자: 배열 초기화 및 모든 값 -1로 설정 
    public MyHashMap() {
        map = new int[1000001];
        Arrays.fill(map, -1);
    }

    // 키에 해당하는 인덱스에 값을 저장
    public void put(int key, int value) {
        map[key] = value;
    }

    // 키에 해당하는 값 반환, 없으면 -1
    public int get(int key) {
        return map[key];
    }

    // 키 제거 (값을 -1로 설정해 제거 표시)
    public void remove(int key) {
        map[key] = -1;
    }
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study > 코딩 테스트' 카테고리의 다른 글

[백준] 11727번 2×n 타일링 2 해설 및 풀이 (Python, Java)  (0) 2025.04.11
[99클럽 코테 스터디 TIL 12일차] 백준 2358번 평행선 해설 및 풀이 (Java)  (0) 2025.04.11
[백준] 1436번 영화감독 숌 해설 및 풀이 (Python)  (0) 2025.04.10
[LeetCode] LeetCode 1679. Max Number of K-Sum Pairs 해설 및 풀이 (Python)  (0) 2025.04.10
[99클럽 코테 스터디 10일차 TIL] LeetCode 2283. Check if Number Has Equal Digit Count and Digit Value 해설 및 풀이 (Java)  (0) 2025.04.09
'Study/코딩 테스트' 카테고리의 다른 글
  • [백준] 11727번 2×n 타일링 2 해설 및 풀이 (Python, Java)
  • [99클럽 코테 스터디 TIL 12일차] 백준 2358번 평행선 해설 및 풀이 (Java)
  • [백준] 1436번 영화감독 숌 해설 및 풀이 (Python)
  • [LeetCode] LeetCode 1679. Max Number of K-Sum Pairs 해설 및 풀이 (Python)
Dev Chu
Dev Chu
  • Dev Chu
    Log_Double 7
    Dev Chu
  • 전체
    오늘
    어제
    • LOG LIST (199)
      • log Double 7 (2)
        • notice (1)
        • 회고록 (1)
      • Study (111)
        • 과제 (2)
        • 코딩 테스트 (105)
        • 대규모 시스템 설계 기초 (4)
      • CS (10)
        • 자료구조 & 알고리즘 (4)
        • Design Pattern (2)
        • TIL (4)
      • FrontEnd (26)
        • HTML & CSS (16)
        • JavaScript & jQuery (9)
        • React (1)
      • BackEnd (24)
        • Java (4)
        • Python (6)
        • Database (0)
        • Spring (6)
      • Infra & DevOps (3)
        • AWS (3)
        • Git (8)
      • Project (3)
        • repo_bis (2)
        • WhiteMonday (1)
      • ETC (20)
        • TIP (13)
        • Error (5)
        • SQLD (2)
  • 블로그 메뉴

    • 코딩 테스트
  • 링크

    • GitHub
  • 공지사항

    • Log Double 7
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Dev Chu
[99클럽 코테 스터디 11일차 TIL] LeetCode 706. Design HashMap 해설 및 풀이 (Java)
상단으로

티스토리툴바