본문 바로가기
반응형

전체 글70

트리(3) - 문자열 검색 문제에 최적화된 트라이(Trie) 자료구조(C언어, Java, Python 예시코드 포함) 1. 트라이(Trie) 자료구조란?트라이(Trie)는 문자열을 효율적으로 저장하고 검색하기 위해 설계된 트리(Tree) 기반 자료구조입니다. 주로 문자열 탐색, 자동 완성, 사전(dictionary) 구현에 사용됩니다. 이번 포스팅에서는 트라이의 구조, 구현 방법, 장단점, 활용 사례를 소개합니다. 2. 트라이의 원리와 구조(1) 트라이의 기본 개념**트라이(Trie)**는 각 노드가 문자열의 문자 하나를 나타내는 자료구조입니다.루트 노드에서 시작하여 문자열의 각 문자를 따라가며 데이터를 저장하거나 탐색합니다.문자열의 끝은 특별한 "종료 노드" 또는 플래그로 표시됩니다. (2) 트라이의 특징효율적인 검색: 문자열 검색 시간이 문자열 길이에 비례합니다. (O(L), L: 문자열 길이)공간 절약: 공통 접두.. 2024. 12. 18.
트리(2) - 이진 탐색 트리(Binary Search Tree)의 원리, 구조, 예제 코드(C언어, Java, Python), 장단점, 사용 사례 총정리 이진 탐색 트리(Binary Search Tree, BST)는 프로그래밍에서 가장 중요한 자료구조 중 하나입니다. 효율적인 데이터 검색, 삽입, 삭제를 가능하게 하며 다양한 알고리즘과 시스템에서 사용됩니다. (1) 이진 탐색 트리란?이진 탐색 트리는 **이진 트리(Binary Tree)**의 한 종류로, 데이터를 정렬된 상태로 저장하며 효율적인 검색과 관리가 가능하도록 설계된 자료구조입니다.  (2) 기본 원리각 노드는 최대 두 개의 자식을 가집니다.왼쪽 서브트리에는 부모 노드보다 작거나 같은 값이 저장됩니다.오른쪽 서브트리에는 부모 노드보다 큰 값이 저장됩니다. (3) 이진 탐색 트리의 특징정렬된 데이터 구조: 노드를 중위 순회(Inorder Traversal)하면 정렬된 데이터가 출력됩니다.효율적인 .. 2024. 12. 18.
트리 (1) - 이진 트리(Binary Tree)의 모든 것: 원리, 구조, 예제 코드(C언어 Java, Python), 장단점, 사용 사례 데이터 구조를 배우는 데 있어 이진 트리(Binary Tree)는 중요한 개념입니다. 이진 트리는 효율적인 데이터 저장과 검색을 가능하게 하며, 다양한 응용 분야에서 사용됩니다. 또한 코딩 테스트 문제 풀이 시 시간 복잡도를 O(logN)으로 만들어 문제 풀이의 키 아이디어가 되는 경우가 매우 많습니다. 이번 글에서는 이진 트리의 원리, 구조, C/Java/Python으로 구현한 예제, 장단점, 그리고 실생활 사용 사례를 살펴봅니다.1. 이진 트리란? (원리와 개념)이진 트리는 각 노드가 최대 두 개의 자식을 가지는 트리 자료구조입니다. 부모-자식 관계로 구성되며, 이진 탐색 트리, 힙, AVL 트리 등 다양한 형태로 확장됩니다.주요 용어루트(Root): 트리의 시작 노드.부모(Parent): 자식 노드.. 2024. 12. 18.
스택(Stack) 자료구조란? (C언어, Java, Python 예시코드 포함) (1) 스택(Stack) 자료구조란?스택(Stack)은 데이터를 후입선출(LIFO, Last In First Out) 방식으로 처리하는 선형 자료구조입니다. 즉, 가장 나중에 삽입된 데이터가 가장 먼저 제거됩니다. 이 특성 덕분에 함수 호출 관리, 계산기 구현, 문자열 역순 처리 등 다양한 프로그래밍 문제에서 활용됩니다. (2) 스택의 기본 동작삽입(Push): 스택의 맨 위에 데이터를 추가.삭제(Pop): 스택의 맨 위 데이터를 제거.확인(Peek 또는 Top): 스택의 맨 위 데이터를 제거하지 않고 확인. (3) 스택의 주요 특징후입선출(LIFO): 나중에 삽입된 데이터가 먼저 제거됨.제한된 접근: 데이터는 스택의 맨 위에서만 삽입 및 제거 가능.구현 방식: 배열 또는 연결 리스트를 사용. (4) 스.. 2024. 12. 18.
큐(Queue) 자료구조란? (C언어, Java, Python 예시코드) (1) 큐(Queue) 자료구조란?큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO, First In First Out) 방식으로 동작하는 데이터 구조입니다. 이러한 특성 때문에 대기열, 작업 스케줄링, 메시지 처리 등 다양한 응용 분야에서 활용됩니다. (2) 큐의 기본 동작삽입(Enqueue): 큐의 끝(Rear)에 데이터를 추가.(예를들어 50을 큐에 추가할 경우 40에 위치한 rear를 한칸 오른쪽으로 밀고 그 칸에 추가)삭제(Dequeue): 큐의 앞(Front)에서 데이터를 제거.(현재 front가 위치한 10을 빼내고 deque 후 front는 20을 가리킴)보기(Peek): 큐의 앞에 있는 데이터를 제거하지 않고 확인.(단순히 현재 front가 가리키고 있는 값이 뭔지만 .. 2024. 12. 18.
반응형