기본 풀이법 전개
# 되돌아가기 (back-tracking)
되돌아간 지점까지는 같은 행보를 한 후보 중에서 종전의 후보와 관련이 있는 후보를 선택한다.
# 나눠풀어 합치기 (divide-and-conquer)
문제를 작은 크기로 쪼개고 그렇게 푼 결과들을 합쳐서 전체 문제의 답으로 만든다.
# 기억하며 풀기 (dynamic programming)
문제의 일부분에 대해서 풀고 기억한다. 문제의 다른 부분을 풀 때 기억한 부분의 답을 활용한다.
# 질러놓고 다듬기 (iterative improvement)
한개의 답 후보를 임의로 선택하고 다듬으면서 답에 근접해 간다.
#1 스택
- Memoization
- DP (Dynamic Programming)
- DFS (Depth First Search)
- Back Tracking
#2 큐
- Priority Queue
- BFS (Breadth First Search)
- Deque
#3 리스트
- Single/Double Linked List
- Merge Sort
- Priority Queue
#4 트리
- Binary Tree (Heap) → Priority Queue
- AVL Tree
- B Tree
- B+ Tree
- Red-Black Tree
- Minimum Spanning Tree
#5 그래프
- Dijstra
- Floyd Warshall
- Topological Sort
- Maximum Flow
- Bipartite Match
#6 Map
#7 Set
#8 탐색
- Binary search
- Hash
#9 정렬
- Selection/Insertion/Bubble sort : worst O(n^2)
- Merge sort : worst O(nlog n)
- Quick sort : 평균 O(nlog n) - worst O(n^2)
- Counting Sort / Radix sort : O(n)
#10 문자열
- Karp-Rabin
- Boyer-Moore
'algorithm' 카테고리의 다른 글
정렬 (0) | 2022.06.19 |
---|---|
의사 난수 생성기 - 4. 메르센 트위스터(Mersenne Twister) (0) | 2022.05.02 |
의사 난수 생성 - 1. Middle-square method (0) | 2022.05.02 |
의사 난수 생성 - 2. LCG (Linear Congruential Generator) (0) | 2022.05.02 |
의사 난수 생성 - 3. LFSR (Linear Feedback Shift Register) (0) | 2022.05.01 |
댓글