본문 바로가기
개발

알고리즘 정리하는 시간 (분류, 종류)

by 오늘도멋진하루 2025. 4. 19.

알고리즘 정리하는 시간 (분류, 종류)

 

알고리즘은 문제를 해결하거나 작업을 수행하기 위한 절차나 규칙을 나타냅니다. 다양한 알고리즘 종류가 있으며, 목적과 문제에 따라 사용됩니다. 아래는 주요 알고리즘의 분류와 대표적인 종류입니다.


목차


1. 정렬 알고리즘 (Sorting Algorithms)

데이터를 특정 순서대로 정렬하는 알고리즘.

  • 버블 정렬 (Bubble Sort)
  • 삽입 정렬 (Insertion Sort)
  • 선택 정렬 (Selection Sort)
  • 퀵 정렬 (Quick Sort)
  • 병합 정렬 (Merge Sort)
  • 힙 정렬 (Heap Sort)
  • 기수 정렬 (Radix Sort)

2. 탐색 알고리즘 (Search Algorithms)

데이터에서 원하는 항목을 찾는 알고리즘.

  • 이진 탐색 (Binary Search)
  • 선형 탐색 (Linear Search)
  • 깊이 우선 탐색 (DFS) (Depth-First Search)
  • 너비 우선 탐색 (BFS) (Breadth-First Search)

3. 최단 경로 알고리즘 (Shortest Path Algorithms)

그래프에서 최단 경로를 찾는 알고리즘.

  • 다익스트라 알고리즘 (Dijkstra's Algorithm)
  • 벨만-포드 알고리즘 (Bellman-Ford Algorithm)
  • 플로이드-워셜 알고리즘 (Floyd-Warshall Algorithm)
  • A * 알고리즘 (A-Star Algorithm)

4. 분할 정복 알고리즘 (Divide and Conquer Algorithms)

문제를 작은 하위 문제로 나누어 해결하는 알고리즘.

  • 퀵 정렬
  • 병합 정렬
  • 분할 정복을 이용한 이진 탐색

5. 동적 계획법 (Dynamic Programming)

문제를 작은 하위 문제로 나누고 결과를 저장해 중복 계산을 방지하는 알고리즘.

  • 피보나치 수열 (Memoization or Tabulation)
  • 최장 공통 부분 문자열 (LCS)
  • 배낭 문제 (Knapsack Problem)
  • 벨만-포드 알고리즘

6. 탐욕 알고리즘 (Greedy Algorithms)

현재 상황에서 최적이라고 판단되는 선택을 하는 알고리즘.

  • 크루스칼 알고리즘 (Kruskal's Algorithm)
  • 프림 알고리즘 (Prim's Algorithm)
  • 활동 선택 문제 (Activity Selection Problem)

7. 백트래킹 (Backtracking)

모든 가능한 경우를 탐색하면서 해결책을 찾는 알고리즘.

  • N-퀸 문제
  • 미로 찾기 문제
  • 부분 집합 합 문제 (Subset Sum Problem)

8. 분지 한정 알고리즘 (Branch and Bound)

최적화 문제를 해결하기 위한 알고리즘.

  • TSP(Traveling Salesman Problem) 해결
  • 0/1 배낭 문제

9. 기계 학습 알고리즘 (Machine Learning Algorithms)

데이터 기반으로 학습하는 알고리즘.

  • 선형 회귀 (Linear Regression)
  • 의사 결정 나무 (Decision Tree)
  • 서포트 벡터 머신 (SVM)
  • K-평균 군집화 (K-Means Clustering)

10. 암호화 알고리즘 (Cryptographic Algorithms)

데이터를 안전하게 보호하기 위한 알고리즘.

  • 대칭 암호화: AES, DES
  • 비대칭 암호화: RSA, ECC
  • 해시 알고리즘: SHA-256, MD5

11. 확률 및 통계 알고리즘

확률적 접근법을 사용해 문제를 해결하는 알고리즘.

  • 몬테카를로 알고리즘
  • 베이지안 알고리즘

 

이 외에도 특정 문제나 상황에 따라 다양한 알고리즘이 활용됩니다.

어떤 알고리즘을 선택할지는 문제의 성격, 입력 크기, 그리고 성능 요구사항에 따라 다릅니다.

 

'개발' 카테고리의 다른 글

파이썬으로 시간복잡도를 알아보자  (0) 2025.04.18
Dart Extension (확장 메서드) 정리  (0) 2025.04.18
Dart 심화 문법  (0) 2025.04.18
Dart 기초 문법 정리  (0) 2025.04.18