# 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]] : 생각해보면 좋을 문제들