고전 알고리즘의 실행 과정을 눈으로 확인하세요. 정렬, 탐색, 수학적 알고리즘 등을 직접 조작하며 원리를 이해할 수 있습니다.
총 17개 항목
범위 내 모든 소수를 O(N log log N)에 찾는 고대 알고리즘
에라토스테네스의 체(Sieve of Eratosthenes)는 특정 상한 범위 $N$ 이하의 모든 소수(Prime Numbers)를 고속으로 판별해내는 대표적인 정수론 알고리즘입니다.
인접한 두 원소를 반복 비교·교환하는 기초 정렬
버블 정렬(Bubble Sort)은 인접한 두 원소를 비교하여 순서가 맞지 않으면 서로 교환(Swap)하는 과정을 반복하며, 각 회차마다 가장 큰 원소가 거품(Bubble)처럼 배열의 맨 뒤로 밀려 올라가는 기초 비교 정렬 알고리즘입니다.
매 패스마다 최솟값을 찾아 앞으로 가져오는 정렬
선택 정렬(Selection Sort)은 미정렬 구간을 전수 조사하여 가장 작은 최솟값(Minimum)의 위치를 찾은 뒤, 미정렬 구간의 맨 첫 번째 원소와 단 한 번만 교환(Swap)하는 정렬 알고리즘입니다.
카드 패 정리하듯 원소를 적절한 위치에 삽입하는 정렬
삽입 정렬(Insertion Sort)은 아직 정렬되지 않은 원소를 하나씩 꺼내어 이미 정렬이 완료된 앞부분 배열의 올바른 위치를 찾아 삽입하는 정렬 알고리즘입니다.
분할 정복으로 O(n log n)을 보장하는 안정 정렬
병합 정렬(Merge Sort)은 배열을 크기가 1이 될 때까지 절반으로 쪼갠 뒤(Divide), 정렬된 두 부분 배열을 정렬 순서를 유지하며 합쳐 나가는(Conquer & Combine) 분할 정복 알고리즘입니다.
피벗을 기준으로 분할하는 평균 O(n log n) 정렬
퀵 정렬(Quick Sort)은 기준 원소인 피벗(Pivot)을 선택하여 피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할(Partition)한 뒤 재귀적으로 정렬하는 대표적인 분할 정복(Divide and Conquer) 알고리즘입니다.
최대 힙을 활용하여 O(n log n)을 보장하는 제자리 정렬
힙 정렬(Heap Sort)은 완전 이진 트리 기반의 최대 힙(Max-Heap) 자료구조를 활용하여, 루트 노드의 최댓값을 반복 추출하며 정렬하는 $O(n log n)$ 보장 제자리 정렬(In-Place Sort) 알고리즘입니다.
비교 없이 O(n+k)에 정렬하는 비교 기반 하한 극복 알고리즘
계수 정렬(Counting Sort)은 원소 간의 대소 비교를 수행하지 않고, 각 정수 값의 출현 빈도수를 카운트 배열에 직접 기록하여 $O(n + k)$ 선형 시간에 정렬하는 비비교 정렬(Non-Comparison Sort) 알고리즘입니다.
자릿수별로 안정 정렬을 반복하는 O(d·n) 선형 정렬
기수 정렬(Radix Sort)은 숫자를 자릿수(Digit) 단위로 분해한 뒤, 낮은 자릿수부터 가장 높은 자릿수까지 안정 정렬(Stable Sort, 주로 계수 정렬)을 반복 적용하여 $O(d cdot n)$에 전체를 정렬하는 비비교 정렬 알고리즘입니다.
정렬된 배열의 탐색 구간을 절반씩 줄여 값과 중복 구간의 경계를 찾는 방법
이진 탐색(Binary Search)은 정렬된 배열에서 가운데 값을 확인한 뒤, 답이 있을 수 없는 절반을 버리는 탐색 알고리즘입니다. 일반 이진 탐색이 목표값과 같은 원소 하나를 찾는다면, Lower Bound와 Upper Bound는 중복된 값의 시작과 끝 경계를 찾습니다.
깊이 우선 탐색(Stack) vs 너비 우선 탐색(Queue)의 탐색 방식 비교
그래프 탐색(Graph Traversal)은 시작 정점으로부터 연결된 모든 정점을 빠짐없이 방문하는 알고리즘입니다. 방문 정점을 관리하는 핵심 자료구조(Stack vs Queue)에 따라 탐색 방향과 특성이 완전히 달라집니다.
단일 출발지에서 다른 모든 노드로 가는 최단 경로 탐색
다익스트라(Dijkstra) 알고리즘은 가중치 그래프 상에서 특정 시작 노드로부터 다른 모든 노드까지의 최단 거리를 구하는 단일 출발점 최단 경로 알고리즘입니다. 매 단계마다 미방문 노드 중 누적 거리가 가장 짧은 노드를 탐욕적(Greedy)으로 확정합니다.
한정된 용량의 배낭에 담을 수 있는 물건들의 최대 가치 결정
배낭 문제(0/1 Knapsack Problem)는 한정된 배낭의 최대 적재 무게 한도 내에서 가치의 합이 최대가 되도록 아이템을 선택하는 대표적인 조합 최적화 문제입니다. 물건을 쪼갤 수 없으므로 그리디 접근이 불가능하며 동적 계획법(Dynamic Programming)의 바텀업 타뷸레이션(Tabulation)으로 해결합니다.
데이터베이스와 파일 시스템의 기초가 되는 다방 자가 균형 탐색 트리
B+ 트리는 모든 실제 데이터 레코드가 최하단 단말(Leaf) 노드에만 저장되고, 내부(Internal) 노드는 탐색 분기를 유도하기 위한 키 배열만을 보관하는 다방 자가 균형 트리(Self-balancing Tree)입니다.
한정된 메모리 슬롯에서 효율적으로 데이터를 교체하는 5가지 알고리즘 실시간 대조
캐시 메모리는 한정된 고속 저장 공간이므로, 가용 슬롯이 꽉 찬 상태에서 새 데이터를 적재하려면 기존 데이터 중 하나를 방출(Eviction)해야 합니다.
CPU 자원을 최적으로 할당하기 위해 경쟁하는 5가지 핵심 프로세스 스케줄러 비교
운영체제(OS)의 CPU 스케줄러는 준비 큐(Ready Queue)에 대기 중인 프로세스들에게 한정된 CPU 연산 자원을 어떤 순서와 방식으로 배분할지 결정합니다.
문자열 검색 및 접두사 자동완성에 최적화된 트리 자료구조
트라이(Trie)는 문자열의 집합을 효율적으로 저장하고 탐색하기 위해 설계된 트리 기반 자료구조로, 접두사 트리(Prefix Tree)라고도 불립니다.