에라토스테네스의 체 (+ 골드바흐의 추측)
크루스칼 알고리즘(Kruskal Algorithm) (feat. Union-Find)

크루스칼 알고리즘(Kruskal Algorithm) (feat. Union-Find)

크루스칼 알고리즘은 가장 적은 비용으로 모든 노드를 연결하여 최소비용신장트리를 만들 때 사용하는 알고리즘이다.


가장 가중치가 작은 간선부터 골라가는 그리디한 방법이며 작동과정 중 사이클이 생기지 않도록 유니온파인드를 사용해 해결한다.

Read More
DFS(Depth First Search)와 BFS(Breath First Search)

DFS(Depth First Search)와 BFS(Breath First Search)

  • 깊이 우선 탐색(Depth First Search)
    • 루트 노드에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법
    • 재귀함수를 기반으로 순환 알고리즘의 형태를 지님.
  • 너비 우선 탐색(Breath First Search)
    • 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법
    • 재귀함수로 동작하지 않는다.
    • 큐를 사용하여 효율적으로 구현 가능하다.

hackerearth

Read More
[C++]스택(Stack)과 큐(Queue)
힙 정렬(Heap Sort)

힙 정렬(Heap Sort)

최대 힙 트리나 최소 힙 트리를 구현해 정렬하는 방법이다.

wikipedia

트리 구조로 보여주는 움짤을 찾아보려 했으나 귀찮았다.

Read More
병합 정렬(Merge Sort)

병합 정렬(Merge Sort)

퀵소트와 마찬가지로 분할정복 알고리즘이다.
재귀함수를 이용해 배열을 절반으로 잘라가며 분할하고 정복한다.

wikipedia

Read More
퀵 정렬(Quick Sort)
삽입 정렬(Insertion Sort)
버블 정렬(Bubble Sort)
선택 정렬(Selection Sort)