728x90
반응형

해시테이블(Hash Table) 완전 이해하기

이전 글에서는 연결 리스트(Linked List)에 대해 알아봤습니다.
이번에는 키(Key)와 값(Value) 쌍으로 데이터를 저장하는 해시테이블(Hash Table) 에 대해 자세히 정리해봅니다.


1. 해시테이블이란?

해시테이블은 데이터를 (키, 값) 쌍으로 저장하고, 키를 통해 값을 빠르게 검색할 수 있는 자료구조입니다.

  • 키를 해시 함수(Hash Function)를 통해 인덱스로 변환하여 저장
  • 검색, 삽입, 삭제 모두 평균적으로 매우 빠름 (O(1))

2. 해시테이블의 특징

항목 설명

접근 속도 평균 O(1) (매우 빠름)
키 중복 여부 키는 고유해야 함 (같은 키 존재 불가)
충돌 처리 체이닝(연결 리스트), 오픈 어드레싱 방식 등 사용
메모리 사용 배열보다 크지만 빠른 접근성 제공

3. 해시테이블 사용 예시 (C# 기준)

C#에서는 Dictionary<TKey, TValue> 클래스를 사용합니다.

 선언과 초기화

using System.Collections.Generic;

Dictionary<string, int> scores = new Dictionary<string, int>();

 요소 추가

scores.Add("Alice", 90);
scores.Add("Bob", 85);
scores["Charlie"] = 95; // 인덱서 방식 추가도 가능

 값 검색

int aliceScore = scores["Alice"];
Console.WriteLine(aliceScore); // 90

 키 존재 여부 확인

if (scores.ContainsKey("Dave"))
{
    Console.WriteLine("Dave의 점수 존재함");
}

 요소 삭제

scores.Remove("Bob");

 전체 순회

foreach (var pair in scores)
{
    Console.WriteLine($"{pair.Key}: {pair.Value}");
}

4. 실생활 예시로 이해하기

  • 해시테이블 = 전화번호부
    • 이름(키)을 알면 바로 전화번호(값)를 찾을 수 있음
  • 해시테이블 = 학생 학번 조회 시스템
    • 학번(키)으로 학생 정보를 빠르게 검색

5. 해시테이블의 활용 사례

사용 예시 설명

데이터베이스 인덱싱 빠른 검색을 위해 키-값 인덱스 사용
캐시(Cache) 시스템 이미 계산된 결과를 저장해 빠르게 접근
중복 체크 특정 값의 존재 여부를 빠르게 판단

이번 글에서는 해시테이블(Hash Table) 의 개념, 특징, C# 코드 사용법을 정리했습니다.

  • 키를 통해 빠르게 값에 접근 가능
  • 데이터 검색, 삽입, 삭제가 평균적으로 O(1)
  • Dictionary 클래스를 통해 쉽게 구현 가능

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 9편  (0) 2025.04.22
자료구조 시리즈 8편  (2) 2025.04.22
자료구조 시리즈 6편  (2) 2025.04.21
자료구조 시리즈 5편  (0) 2025.04.21
자료구조 시리즈 4편  (0) 2025.04.21

+ Recent posts