자료구조(25)
-
디스조인트 집합 (Disjoint Set)의 개념 및 구현
디스조인트 집합 (Disjoint Set)의 개념 및 구현디스조인트 집합(Disjoint Set)은 겹치지 않는 여러 개의 집합을 효율적으로 관리하기 위한 자료구조입니다. 주로 집합 간의 결합(Union)과 원소의 대표 찾기(Find) 연산을 빠르게 수행하는 데 사용됩니다. 이 자료구조는 그래프의 연결성 확인과 최소 신장 트리 알고리즘(예: 크루스칼 알고리즘)에서 중요한 역할을 합니다.1. 디스조인트 집합(Disjoint Set)이란?디스조인트 집합은 다음과 같은 두 가지 기본 연산을 빠르게 수행하기 위한 자료구조입니다:Find: 특정 원소가 속한 집합의 대표 원소를 찾습니다.Union: 두 집합을 하나로 합칩니다.이 자료구조는 특히 서로소 집합(겹치는 원소가 없는 집합)을 관리할 때 유용하며, 트리 기..
2024.11.22 -
트라이 (Trie)의 개념 및 구현
트라이(Trie)의 개념 및 구현트라이(Trie)는 문자열을 효율적으로 저장하고 탐색하기 위해 사용되는 트리 기반 자료구조입니다. 주로 문자열 검색과 패턴 매칭에서 활용되며, 특히 사전(Dictionary) 데이터와 같이 많은 문자열을 처리해야 하는 상황에서 뛰어난 성능을 발휘합니다. 이번 포스팅에서는 트라이의 개념, 특징, 구현 방법, 그리고 활용 사례를 살펴보겠습니다.1. 트라이(Trie)란?1.1 정의트라이는 문자열 집합을 저장하고 탐색하는 데 최적화된 트리 자료구조입니다.각 노드는 문자 하나를 나타내며, 경로를 따라 이동하면 문자열이 형성됩니다.루트 노드는 빈 상태로 시작하며, 문자열의 끝을 나타내는 노드에 별도의 표시(예: isEnd)를 추가합니다.1.2 주요 특징문자열 삽입 및 검색의 시간 복..
2024.11.22 -
힙(Heap)의 개념 및 구현
힙(Heap)의 개념 및 구현힙(Heap)은 트리 기반의 데이터 구조로, 우선순위 큐(Priority Queue)를 구현하거나 정렬 알고리즘에서 효율적으로 사용할 수 있는 자료구조입니다. 힙은 주로 최대값 또는 최소값을 빠르게 찾기 위한 목적으로 사용됩니다. 이번 포스팅에서는 힙의 개념, 특징, 유형, 구현 방법, 그리고 활용 사례를 살펴보겠습니다.1. 힙의 개념1.1 힙(Heap)이란?힙은 완전 이진 트리(Complete Binary Tree)의 형태를 가지며, 다음과 같은 조건을 만족하는 트리입니다:최대 힙(Max-Heap): 부모 노드의 값이 자식 노드의 값보다 크거나 같다.최소 힙(Min-Heap): 부모 노드의 값이 자식 노드의 값보다 작거나 같다.1.2 힙의 특징완전 이진 트리: 힙은 왼쪽에서..
2024.11.22 -
해싱과 해시 함수의 개념 및 구현
해싱과 해시 함수의 개념 및 구현해싱(Hashing)은 데이터를 효율적으로 저장하고 검색하는 방법으로, 특히 대규모 데이터 처리에 적합한 기술입니다. 데이터의 키(Key)를 입력으로 받아 해시 함수(Hash Function)를 사용해 고유한 해시 값(Hash Value)을 생성하고, 이를 통해 데이터의 저장 위치를 결정합니다. 이 포스팅에서는 해싱과 해시 함수의 개념, 설계 원리, 구현 방법 및 활용 사례를 설명합니다.1. 해싱(Hashing)의 개념1.1 정의해싱은 키 값을 일정한 규칙에 따라 고정된 크기의 해시 값으로 변환하여 데이터의 저장 및 검색을 효율화하는 기법입니다.1.2 주요 특징고속 데이터 검색: 평균적으로 O(1)의 시간 복잡도로 데이터를 검색할 수 있습니다.키-값 매핑: 고유 키를 통해..
2024.11.22 -
해시 테이블 (Hash Table)의 개념 및 구현
해시 테이블(Hash Table)의 개념 및 구현해시 테이블(Hash Table)은 효율적으로 데이터를 저장하고 검색할 수 있는 데이터 구조입니다. 주로 키(Key)와 값(Value)의 쌍으로 데이터를 저장하며, 해시 함수(Hash Function)를 사용해 데이터를 적절한 위치에 매핑합니다. 이번 포스팅에서는 해시 테이블의 개념, 작동 원리, 장단점, 구현 방법, 그리고 활용 사례에 대해 설명합니다.1. 해시 테이블의 개념1.1 정의해시 테이블은 키를 기반으로 데이터를 저장하고 검색하는 데이터 구조입니다. 키를 해시 함수에 입력하면, 고유한 해시 값(Hash Value)이 생성되고 이를 사용해 데이터를 저장할 인덱스를 결정합니다.1.2 특징빠른 검색: 평균 시간 복잡도는 O(1)입니다.키-값 구조: 각..
2024.11.22 -
인접 리스트, 인접 행렬 표현법
인접 리스트와 인접 행렬 표현법그래프를 저장하고 표현하는 방법은 다양한데, 그중 가장 널리 사용되는 방식은 인접 리스트(Adjacency List)와 인접 행렬(Adjacency Matrix)입니다. 이 두 가지 표현법은 그래프의 특성과 사용 목적에 따라 적합하게 선택됩니다. 이번 포스팅에서는 두 표현법의 개념, 구현 방법, 장단점, 그리고 선택 기준에 대해 다뤄보겠습니다.1. 인접 리스트 (Adjacency List)1.1 개념인접 리스트는 각 정점(Vertex)에 대해 연결된 다른 정점들을 리스트(List)로 저장하는 방식입니다.구조:각 정점은 리스트에 해당하며, 리스트 안에 연결된 정점들이 포함됩니다.공간 복잡도: O(V+E) V: 정점의 개수E: 간선의 개수1.2 구현 (C#)using Syst..
2024.11.21