contents
코딩 테스트에 자주 나오는 모든 알고리즘 개요
다음은 코딩 테스트나 기술 면접 대비를 위해 반드시 알아야 할 알고리즘 목록입니다. 각 알고리즘 분류별로 대표적인 예시와 목적, 사용 예가 정리되어 있습니다.
1. 정렬(Sorting) 알고리즘
데이터를 특정 순서로 정렬하여 검색·탐색·비교를 효율적으로 수행함.
- 기본 정렬: Bubble Sort, Selection Sort, Insertion Sort
- 고급 정렬: Quick Sort, Merge Sort, Heap Sort (O(n log n))
- 특수 정렬: Counting Sort, Radix Sort, Bucket Sort (정수/범위 제한 시 유용)
- 기타: Shell Sort, TimSort (Java/Python의 기본 정렬 방식)
2. 검색(Search) 알고리즘
데이터 내에서 원하는 값을 빠르게 찾기.
- Linear Search (선형 탐색)
- Binary Search (이진 탐색) – 반드시 암기!
- Jump/Ternary/Fibonacci Search – 심화 · 최적화 버전
- DFS / BFS – 그래프·트리 탐색의 기본
3. 문자열 알고리즘 및 패턴 검색
문자열에서 패턴을 찾거나 문자열을 조작:
- 문자열 검색: Naive, KMP, Rabin-Karp, Z 알고리즘
- 기타 문제: Edit Distance, LPS, LRS 등
- Trie(트라이): 접두어 탐색 및 자동완성 등의 문제에 매우 유용
4. 배열 / 행렬 알고리즘
배열 또는 2차원 배열의 조작 및 문제 해결.
- Sliding Window
- 투 포인터(Two-pointers)
- Kadane 알고리즘: 최대 부분합
- 트래핑 레인워터(Trapping Rain Water) 알고리즘
- 행렬 순회, 회전, 대각선 탐색 등
5. 재귀 및 백트래킹
모든 경우의 수를 탐색 & 조건에 따라 백트랙.
- N-Queen
- 수트도쿠(Sudoku Solver)
- 부분집합(Subset) 문제
- 순열, 조합
- Word Break, 미로 탐색 등
6. 그리디 알고리즘 (Greedy)
매 단계를 최선으로 선택해서 전체 최적을 찾는 전략.
- 활동 선택(Activity Selection)
- Fractional Knapsack
- Job Scheduling
- 허프만 코딩(Huffman Coding)
- 동전 교환 문제
- Prim, Kruskal (최소 신장 트리)
7. 동적 프로그래밍 (DP)
중복되는 하위 문제를 기억(memoization/tabulation)하여 속도 개선.
- 0/1 Knapsack
- LIS (최장 증가 부분 수열)
- LCS (최장 공통 부분 수열)
- Edit Distance
- 팰린드롬 관련 문제
- DP on grid, string, tree로 분류 가능
8. 분할 정복 (Divide and Conquer)
문제를 작은 부분으로 나눠서 재귀적으로 해결하고 합침.
- Merge Sort, Quick Sort
- Binary Search
- Closest Pair
- Strassen 행렬 곱셈 등
9. 그래프(Graph) 알고리즘
노드-엣지 구조를 다루는 알고리즘.
- DFS / BFS
- 최단 경로: Dijkstra, Bellman-Ford
- 위상 정렬(Topological Sort)
- 최소 신장 트리: Prim, Kruskal
- Union-Find (Disjoint Set)
- 플로이드, A* (심화)
10. 트리(Tree) 알고리즘
- 순회: 전위/중위/후위/레벨 순회
- BST 연산
- 최소 공통 조상(LCA)
- 힙 및 Heap Sort
11. 링크드 리스트 (Linked List)
- 삽입, 삭제
- 반전, 병합
- 사이클 판별(Floyd 알고리즘)
- 교차점 찾기 등
12. 해싱 (Hashing)
- HashMap / HashSet
- 빈도수 카운트
- 두 수의 합
- 배열 교집합/중복 제거 등
13. 비트 조작 (Bit Manipulation)
- 비트 켜기/끄기/토글
- 비트마스크, 부분집합 생성
- XOR 활용
- isPowerOfTwo, swap 등
14. 기타 / 고급 자료구조
- Trie (접두사 트리)
- 세그먼트 트리, 펜윅 트리
- 우선순위 큐(PriorityQueue), 힙
- 블룸 필터 (확률 기반 조회)
- 롤링 해시
- Mo’s 알고리즘 (루트 분할)
📌 시각화: 문제 영역별 알고리즘 계통도 (개념)
[ 배열 | 문자열 | 링크드리스트 | 트리 | 그래프 ]
↓
[ 정렬 | 검색 | DP | 백트래킹 ]
↓
[ 해싱 | 비트 | 고급 자료구조 ]
자주 나오는 알고리즘 정리표
| 분류 | 대표 알고리즘 예시 | 주요 활용 영역 |
|---|---|---|
| 정렬 | Quick, Merge, Counting, Radix | 정렬, 전처리 |
| 검색 | Binary, DFS, BFS | 빠른 탐색, 그래프/트리 순회 |
| 문자열 알고리즘 | KMP, Rabin-Karp, Trie | 패턴 탐색, 사전형 문제 |
| 백트래킹/재귀 | N-Queen, 조합, 순열, 미로 | 경우의 수 순회 |
| DP | Knapsack, LCS, LIS, Edit Distance | 최적화, 상태 기억 |
| 그리디 | 활동 선택, 동전, 잡 스케줄링 | 효율성 문제, 자원 최적화 |
| 그래프/트리 | Dijkstra, MST, Union-Find, 위상 정렬 | 네트워크, 경로, 구조 |
| 해싱 | HashMap/Set | 빠른 조회/중복 체크 |
| 비트 조작 | XOR, 비트마스크, 부분집합 생성 | 성능 최적화, 조합 문제 |
✅ 팁
- LeetCode, 프로그래머스, 백준 등의 인기 문제 유형을 참고하세요.
- 카카오, 네이버, 구글 등은 DP/그래프/백트래킹 문제가 많이 나옵니다.
- 알고리즘마다 직접 구현 → 시간복잡도 분석 → 대표 예제로 연습하세요.
references