leetcode 알고리즘 자료구조 토픽 전체
- DEV COMMON
- 2024. 9. 10.
반응형
LeetCode에서 제공하는 문제의 각 토픽들은 알고리즘과 자료구조의 핵심적인 영역을 다룹니다. 이 토픽들이 알고리즘과 자료구조의 전체를 대표한다고 할 수는 없지만, 대부분의 중요한 개념과 기술들을 포함하고 있습니다. 아래는 각 토픽이 의미하는 바를 간략히 설명한 것입니다.
주요 알고리즘 및 자료구조 토픽 설명
- Array (배열): 데이터를 선형으로 나열한 자료구조로, 접근 및 수정이 O(1)인 자료구조입니다.
- String (문자열): 문자로 이루어진 시퀀스 처리 문제를 다룹니다. 주로 문자열 검색, 패턴 매칭, 변환 등의 문제들이 포함됩니다.
- Hash Table (해시 테이블): 데이터를 키-값 쌍으로 저장하는 자료구조로, 평균적으로 O(1) 시간에 검색, 삽입, 삭제가 가능합니다.
- Dynamic Programming (동적 프로그래밍): 큰 문제를 작은 하위 문제로 나누어 해결하고, 그 결과를 재활용하는 최적화 기법입니다.
- Math (수학): 수학적 연산이나 공식, 정수를 다루는 문제로, 소수, 최대공약수, 최소공배수 등의 문제도 포함됩니다.
- Sorting (정렬): 데이터를 특정 순서(오름차순, 내림차순 등)로 정렬하는 알고리즘들을 다룹니다. (예: Merge Sort, Quick Sort)
- Greedy (탐욕법): 매 단계에서 최선의 선택을 하여 최적해를 찾는 알고리즘 기법입니다.
- Depth-First Search (깊이 우선 탐색, DFS): 그래프나 트리에서 노드를 깊이 우선으로 탐색하는 방법입니다.
- Database (데이터베이스): SQL 쿼리 및 관계형 데이터베이스 관련 문제들로, 데이터를 검색하고 조작하는 방법을 다룹니다.
- Binary Search (이진 탐색): 정렬된 배열에서 특정 값을 O(log n) 시간에 찾는 알고리즘입니다.
- Matrix (행렬): 2차원 배열로 이루어진 데이터를 다루는 문제로, 행과 열로 이루어진 데이터를 탐색하거나 처리합니다.
- Tree (트리): 계층적인 구조로 이루어진 자료구조로, 각 노드가 자식 노드를 가질 수 있는 구조입니다.
- Breadth-First Search (너비 우선 탐색, BFS): 그래프나 트리에서 노드를 너비 우선으로 탐색하는 방법입니다.
- Bit Manipulation (비트 조작): 정수 값을 비트 단위로 조작하여 효율적인 연산을 수행하는 문제입니다.
- Two Pointers (투 포인터): 배열이나 리스트에서 두 개의 포인터를 사용하여 문제를 해결하는 방법입니다.
- Binary Tree (이진 트리): 각 노드가 최대 두 개의 자식 노드를 가지는 트리 자료구조입니다.
- Heap (Priority Queue, 힙): 우선순위 큐를 구현한 자료구조로, 최대값 또는 최소값을 빠르게 찾고 삭제할 수 있습니다.
- Prefix Sum (구간 합): 배열의 구간 합을 효율적으로 계산하기 위해 누적 합을 미리 구해두는 기법입니다.
- Stack (스택): LIFO(Last In, First Out) 방식의 자료구조입니다.
- Simulation (시뮬레이션): 주어진 문제를 실제로 계산하거나 시뮬레이션하여 해결하는 방식입니다.
- Graph (그래프): 정점과 간선으로 이루어진 자료구조로, 그래프 탐색 및 최단 경로 찾기 등의 문제를 다룹니다.
- Counting (카운팅): 특정 조건을 만족하는 원소의 개수를 세는 문제입니다.
- Sliding Window (슬라이딩 윈도우): 고정된 크기의 윈도우를 이동하며 배열이나 문자열을 처리하는 알고리즘입니다.
- Design (설계): 특정 기능을 구현하는 방법에 대한 설계 문제입니다. 예: LRU Cache 구현.
- Backtracking (백트래킹): 모든 가능한 해를 탐색하기 위해 후보군을 선택하면서 문제를 푸는 방법입니다.
- Enumeration (열거): 모든 가능한 해를 나열하는 방식으로 문제를 해결합니다.
- Union Find (합집합 찾기): 동적 연결성을 찾기 위한 알고리즘으로, 대표적으로 서로소 집합을 관리합니다.
- Linked List (연결 리스트): 노드들이 포인터를 통해 연결된 선형 자료구조입니다.
- Ordered Set (정렬된 집합): 삽입된 순서대로 정렬이 유지되는 집합 자료구조입니다.
- Monotonic Stack (단조 스택): 오름차순이나 내림차순으로 유지되는 스택을 사용해 문제를 해결합니다.
- Number Theory (정수론): 수학에서 소수, 최대공약수 등과 같은 정수의 특성을 다룹니다.
- Trie (트라이): 문자열을 저장하고 검색하는 데 효율적인 트리 자료구조입니다.
- Segment Tree (세그먼트 트리): 배열의 구간 합이나 최대값 등을 빠르게 계산하기 위한 자료구조입니다.
- Divide and Conquer (분할 정복): 문제를 작은 문제들로 나누어 해결하고, 이를 합치는 방식으로 문제를 해결합니다.
- Bitmask (비트마스크): 비트 연산을 활용하여 문제를 해결하는 방법입니다.
- Queue (큐): FIFO(First In, First Out) 방식의 자료구조입니다.
- Recursion (재귀): 함수가 자기 자신을 호출하는 방식으로 문제를 해결하는 방법입니다.
- Binary Search Tree (이진 탐색 트리): 이진 트리의 한 종류로, 왼쪽 자식 노드는 부모 노드보다 작고, 오른쪽 자식 노드는 부모 노드보다 큽니다.
- Combinatorics (조합론): 주어진 원소에서 특정 개수를 선택하는 문제를 다룹니다.
- Binary Indexed Tree (펜윅 트리): 구간 합 계산에 사용되는 자료구조입니다.
- Geometry (기하학): 점, 선, 면과 같은 기하학적 객체를 다루는 문제입니다.
- Memoization (메모이제이션): 중복 계산을 피하기 위해 이전 계산 결과를 저장하여 사용하는 방법입니다.
- Hash Function (해시 함수): 데이터를 해시 값으로 변환하는 함수로, 해시 테이블을 구현하는 데 사용됩니다.
- Topological Sort (위상 정렬): 방향성 있는 그래프에서 순서를 정하는 정렬 기법입니다.
- String Matching (문자열 매칭): 문자열 내에서 특정 패턴을 찾는 알고리즘입니다.
- Shortest Path (최단 경로): 그래프에서 두 정점 사이의 최단 경로를 찾는 알고리즘입니다.
- Rolling Hash (롤링 해시): 해시 값을 효율적으로 업데이트하는 방법으로, 문자열 매칭 문제에서 많이 사용됩니다.
- Game Theory (게임 이론): 두 명 이상의 플레이어가 경쟁하는 게임에서 최적의 전략을 찾는 문제입니다.
- Interactive (상호작용 문제): 사용자와 상호작용하며 문제를 푸는 방식입니다.
- Data Stream (데이터 스트림): 실시간으로 입력되는 데이터를 처리하는 문제입니다.
- Brainteaser (두뇌 게임): 논리적 사고를 요구하는 문제들입니다.
- Monotonic Queue (단조 큐): 순서가 유지된 상태에서 값을 처리하는 큐입니다.
- Randomized (랜덤화): 무작위성을 사용하는 알고리즘입니다.
- Merge Sort (병합 정렬): Divide and Conquer 방식을 사용하는 정렬 알고리즘입니다.
- Doubly-Linked List (이중 연결 리스트): 양방향으로 연결된 리스트입니다.
- Iterator (이터레이터): 컬렉션의 요소를 순차적으로 접근하는 객체입니다.
- Concurrency (동시성): 동시 실행을 처리하는 문제입니다.
- Probability and Statistics (확률과 통계): 확률과 통계적 방법을 다루는 문제입니다.
- Counting Sort (계수 정렬): 값의 개수를 세어 정렬하는 알고리즘입니다.
- Quickselect (퀵 셀렉트): 배열에서 k번째 작은 원소를 찾는 알고리즘입니다.
- Suffix Array (접미사 배열): 문자열의 모든 접미사를 사전식으로 정렬한 배열입니다.
- Bucket Sort (버킷 정렬): 데이터를 여러 개의 버킷으로 나누어 정렬하는 알고리즘입니다.
- Minimum Spanning Tree (최소 신장 트리): 그래프의 모든 정점을 연결하는 최소 비용의 트리를 찾는 문제입니다.
- Shell (셸 스크립트): 셸을 사용하여 문제를 해결하는 방식입니다.
- Line Sweep (라인 스위프): 선을 따라가며 상태를 추적하는 알고리즘입니다.
- Reservoir Sampling (저수지 샘플링): 데이터 스트림에서 랜덤 샘플을 추출하는 방법입니다.
- Strongly Connected Component (강한 연결 성분): 방향성 있는 그래프에서 모든 정점이 서로 도달 가능한 부분 그래프입니다.
- Eulerian Circuit (오일러 회로): 그래프에서 모든 간선을 한 번씩만 지나가는 회로입니다.
- Radix Sort (기수 정렬): 자리수를 기준으로 데이터를 여러 번 정렬하는 알고리즘입니다.
- Rejection Sampling (거절 샘플링): 무작위 샘플을 생성할 때, 특정 조건을 만족하지 않으면 샘플을 버리는 방식입니다.
- Biconnected Component (이중 연결 성분): 그래프에서 어느 정점을 제거해도 연결이 끊어지지 않는 부분입니다.
이 목록은 알고리즘과 자료구조의 중요한 주제들을 포괄하며, 각 주제는 특정한 문제 유형을 해결하는 데 매우 유용합니다.
반응형
'DEV COMMON' 카테고리의 다른 글
UX 라이팅 (4) | 2024.09.23 |
---|---|
Filename is too long (0) | 2022.12.11 |
임시 이슈 (3) | 2022.06.26 |
Docker 연습 (0) | 2022.06.26 |
rank (order) in database (0) | 2022.03.26 |