AIINSIGHT NOTE
AI · Web3 · Tech trends and insights at a glance
AI · Web3 · Tech trends and insights at a glance
탐색·정렬·그래프·동적 프로그래밍·문자열·수학·기하 알고리즘의 원리와 구현을 다룬다. 코딩 인터뷰 필수 개념부터 경쟁 프로그래밍 고급 기법까지 체계적으로 정리한다.
알고리즘(Algorithm)은 주어진 문제를 해결하기 위한 단계별 절차다. 어떤 알고리즘을 선택하느냐가 코드의 정확성과 성능을 결정하며, 컴퓨터 과학 전반의 핵심 역량이다.
모든 알고리즘은 시간복잡도와 공간복잡도로 효율성을 평가한다.
| 알고리즘 | 복잡도 | 특징 |
|---|---|---|
| 이진 탐색 | O(log n) | 정렬 배열에서 O(log n) 탐색 |
| 정렬 알고리즘 | O(n log n) | 퀵·병합·힙·기수 정렬 비교 |
| 투 포인터 | O(n) | 정렬 배열에서 두 조건 동시 만족 |
| 슬라이딩 윈도우 | O(n) | 연속 구간 최적화 |
| 완전 탐색 | O(2ⁿ~n!) | 모든 경우의 수 탐색 |
| 알고리즘 | 용도 |
|---|---|
| BFS | 최단 경로 (가중치 없음), 레벨별 탐색 |
| DFS | 위상 정렬, SCC, 백트래킹 |
| 다익스트라 | 단일 출발 최단 경로 (음수 간선 없음) |
| 벨만-포드 | 음수 간선 허용, 음수 사이클 감지 |
| 플로이드-워샬 | 모든 쌍 최단 경로 O(V³) |
| 크루스칼/프림 | 최소 신장 트리 (MST) |
| 위상 정렬 | DAG에서 의존성 순서 결정 |
| 강연결 요소(SCC) | 방향 그래프의 강하게 연결된 부분 |
| 네트워크 플로우 | 최대 흐름, 최소 컷 |
| 이분 매칭 | 이분 그래프에서 최대 매칭 |
| 패턴 | 대표 문제 |
|---|---|
| 1차원 DP | 피보나치, 최장 증가 부분수열(LIS) |
| 2차원 DP | 편집 거리(Edit Distance), 배낭 문제 |
| 구간 DP | 행렬 연쇄 곱셈, 팰린드롬 분할 |
| 트리 DP | 트리에서의 독립 집합, 무게 최적화 |
| 비트마스크 DP | 외판원 문제(TSP), 집합 커버 |
| 행렬 거듭제곱 | 피보나치 O(log n), 선형 점화식 |
| 알고리즘 | 내용 |
|---|---|
| 에라토스테네스의 체 | O(n log log n) 소수 판별 |
| 밀러-라빈 소수 판별 | 확률적 소수 판별, 빠른 대수 처리 |
| 확장 유클리드 | gcd + 베주 계수, 모듈러 역원 계산 |
| 고속 푸리에 변환(FFT) | 다항식 곱셈 O(n log n) |
| 모듈러 산술 | 나머지 연산, 페르마 소정리, 합동 |
| 패러다임 | 핵심 아이디어 | 대표 예시 |
|---|---|---|
| 분할 정복 | 문제를 반으로 나눠 재귀 해결 | 병합 정렬, 퀵 정렬, FFT |
| 그리디 | 매 순간 최선의 선택 | 다익스트라, 허프만 코딩 |
| 동적 프로그래밍 | 부분 문제 중복 — 메모이제이션 | 배낭 문제, LCS |
| 백트래킹 | 완전 탐색 + 가지치기 | N-Queen, 스도쿠 |
| 랜덤화 | 무작위성으로 기대 성능 보장 | 랜덤 퀵 정렬, 카르거 알고리즘 |
| 근사 알고리즘 | NP-hard를 근사적으로 해결 | 여행자 문제 2-근사 |