해시맵은 키-값 쌍을 빠르게 저장하고 조회할 수 있는 자료구조입니다.
대부분의 작업에서 평균 시간 복잡도가 O(1)이기 때문에, 특정한 값이나 키를 빠르게 찾을 때 사용하면 좋습니다.
1. 빠른 조회가 필요한 경우
특정 값이나 키를 빠르게 조회해야 할 때, 해시맵을 사용하면 유리합니다.
예를 들어, 학생 ID에 대한 학생 정보를 저장하거나, 상품 코드에 따른 상품 이름을 관리할 때 유용합니다.
Map<String, String> studentMap = new HashMap<>();
studentMap.put("S123", "John Doe");
studentMap.put("S124", "Jane Doe");
2. 중복 없는 값이나 고유 값을 추적할 때
데이터가 이미 존재하는지 여부를 빠르게 확인하고 싶을 때 해시맵을 사용하면 좋습니다.
예를 들어, 중복된 값을 허용하지 않거나 고유한 값만 유지해야 할 때, 해시맵의 키에 값을 저장하여 빠르게 존재 여부를 확인할 수 있습니다.
3. 빈도 수를 계산할 때
해시맵은 각 값의 빈도 수를 추적하는 경우에 매우 적합합니다.
예를 들어, 문자열 내에서 각 문자가 몇 번 등장했는지 확인할 때 유용합니다.
Map<Character, Integer> charCount = new HashMap<>();
for (char c : text.toCharArray()) {
charCount.put(c, charCount.getOrDefault(c, 0) + 1);
}
4. 상대 위치를 쉽게 저장할 때
해시맵을 이용해 배열의 각 요소와 인덱스를 저장해 두면, 나중에 같은 값을 다시 만났을 때 바로 이전 위치를 찾을 수 있습니다.
예를 들어, 두 수의 합 문제에서는 각 숫자의 값과 인덱스를 해시맵에 저장하여, 타겟 값을 만들 수 있는 인덱스를 쉽게 찾을 수 있습니다.
5. 연관 관계를 저장할 때
해시맵은 키와 값을 연관시키는 데 적합합니다.
예를 들어, 고객과 주문 목록을 매칭하거나, 지역과 지역 코드를 매칭할 때 유용합니다.
6. 정렬이 필요 없을 때
해시맵은 기본적으로 키의 순서를 보장하지 않기 때문에 정렬이 필요 없는 경우에 적합합니다.
순서가 필요한 경우는 `TreeMap`이나 `LinkedHashMap`을 사용해야 합니다.
'방구석 컴퓨터 > 방구석 자료구조&알고리즘' 카테고리의 다른 글
[LeetCode][Grind 75] 226. Invert Binary Tree (0) | 2024.11.01 |
---|---|
[LeetCode][Grind 75] 121. Best Time to Buy and Sell Stock (0) | 2024.11.01 |
[LeetCode][Grind 75] 21. Merge Two Sorted Lists (0) | 2024.11.01 |
[LeetCode][Grind 75] 125. Valid Palindrome (0) | 2024.11.01 |
하노이 탑 (0) | 2021.01.14 |