# Algorithm?
알고리즘은 특정 문제를 해결하기 위한 절차나 방법을 공식화한 형태를 말한다.
알고리즘을 많이 안다는 것은 도구를 많이 가지고 있다는 것과 같다.
로직을 구현할 때 다양한 도구를 사용할 수 있으면 효과적이고 강력한 코드를 짤 수 있다.
![[BAEKJOON.png]]
- 🌐[BeakJoon](https://www.acmicpc.net/) 한국에 유명한 알고리즘 트레이닝 사이트이다. ICPC, 한국정보올림피아드 같은 대회 문제나 Open Cup 같은 사설 대회 문제가 주를 이루고 있다.
- 문제들이 알고리즘 별로 구분이 잘 되어있기 때문에 다양한 알고리즘을 공부하기에 적합한 사이트이다.
- 🌐[solved.ac](https://solved.ac/)라는 커뮤니티 사이트가 있어 백준에서 자신의 티어(수준)을 구분 할 수 있으나, 단순히 문제를 풀기만 해도 점수가 오르기 때문에 실력을 구분하는 명확한 지표는 아니다.
# Algorithm 종류
- 밑에 있는 알고리즘/자료구조들은 필자가 백준에서 공부한 알고리즘을 정리한 것이다.
- 기본적인 알고리즘/자료구조들은 배제하였다.
- 모든 코드들은 C++로 구현하였다.
## Array
##### 🔗[[Binary Search]] : 이분 탐색
##### 🔗[[MITM(Meet in the middle)]] : 중간에서 만나기
##### 🔗[[PBS(Parallel Binary Search)]] : 병렬 이분 탐색(작성중)
## Graph Theory
##### 🔗[[BFS(Breadth-First Search)]] : 너비 우선 탐색
##### 🔗[[DFS(Depth-First Search)]] : 깊이 우선 탐색
##### 🔗[[Dijkstra's Algorithm]] : 다익스트라
##### 🔗[[CCW(Counter Clock Wise)]] : CCW
##### 🔗[[Graham's Scan Convex Hull]] : 그라함 스캔 알고리즘을 이용한 컨벡스 헐
##### 🔗[[Maximum Flow (Edmonds-Karp Argorithm)]] : 최대 유량
##### 🔗[[MCMF(Minimum Cost Maximum Flow)]] : 최소 비용 최대 유량
##### 🔗[[SCC(Strongly Connected Component)]] : 강한 연결 요소
##### 🔗[[Articulation Points And Bridges]] : 단절점과 단절선
## Math
##### 🔗[[DP(Dynamic Programming)]] : 다이나믹 프로그래밍
##### 🔗[[Knapsack problem]] : 배낭 문제
##### 🔗[[Sieve Of Eratosthenes]] : 에라토스테네스의 체
##### 🔗[[2-SAT(2-Satisfiability)]] : 2-SAT
##### 🔗[[CHT(Convex Hull Trick)]] : 볼록 껍질을 이용한 최적화
##### 🔗[[FFT(Fast Fourier Transform)]] : 고속 푸리에 변환 (공부중)
## Query
##### 🔗[[Offline Query]] : 오프라인 쿼리
##### 🔗[[Mo's]] : 모스
## String
##### 🔗[[KMP(Knuth-Morris-Pratt)]] : KMP
##### 🔗[[Tire]] : 트라이
## Tree
##### 🔗[[Union Find]] : 유니온 파인드
##### 🔗[[LCA(Lowest Common Ancestor)]] : 최소 공통 조상
##### 🔗[[Segment Tree]] : 세그먼트 트리
##### 🔗[[Lazy Segment Tree]] : 느리게 갱신되는 세그먼트 트리
##### 🔗[[Merge Sort Tree]] : 머지 소트 트리
##### 🔗[[ETT(Euler Tour Technique)]] : 오일러 경로 테크닉
##### 🔗[[MST(Minimum Spanning Tree)]] : 최소 스패닝 트리
##### 🔗[[Fenwick Tree]] : 펜윅 트리
##### 🔗[[HLD(Heavy Light Decomposition)]] : heavy-light 분할
## Unclassfied
##### 🔗[[BT(BackTracking)]] : 벡트레킹
##### 🔗[[Bitmask]] : 비트마스킹
##### 🔗[[Square Root Decomposition]] : 제곱근 분할법
##### 🔗[[Great Problem To Think About]] : 생각해보면 좋을 문제들