본문 바로가기

전체 글34

그래프 알고리즘 요약 그래프 알고리즘 (Graph Algorithms)그래프 알고리즘(Graph Algorithms)은 노드(Node)와 간선(Edge)으로 이루어진 그래프 구조를 기반으로 한 알고리즘입니다. 그래프는 네트워크와 유사하게 노드들이 연결된 형태를 이루고 있으며, 이를 통해 네트워크 최단 경로, 최소 비용 신장 트리 등을 찾는 것이 주된 목표입니다. 대표적인 그래프 알고리즘으로는 다익스트라 알고리즘(Dijkstra's Algorithm), 플로이드-워셜 알고리즘(Floyd-Warshall Algorithm), 크루스칼 알고리즘(Kruskal's Algorithm), 프림 알고리즘(Prim's Algorithm) 등이 있습니다. 각각의 알고리즘은 문제의 종류와 요구사항에 따라 사용됩니다. 아래에서는 각 알고리즘을 .. 2024. 9. 13.
백트래킹 (Backtracking) 요약 백트래킹 (Backtracking)백트래킹은 문제를 해결하기 위한 탐색 알고리즘으로, 가능한 모든 해를 탐색하는 과정에서 잘못된 경로로 들어서면 그 즉시 되돌아가서 다른 경로를 탐색하는 방법입니다. 이를 통해 문제의 최적해를 찾거나, 문제의 조건을 만족하는 해를 구할 수 있습니다. 백트래킹은 주로 조합 탐색, 그래프 탐색, 퍼즐 문제 해결 등에 사용됩니다. 대표적인 문제로는 N-퀸 문제와 부분 집합 문제가 있습니다.   1. N-퀸 문제 (N-Queens Problem)N-퀸 문제는 체스판 위에 N개의 퀸을 서로 공격할 수 없도록 배치하는 문제입니다. 퀸은 가로, 세로, 대각선 방향으로 공격할 수 있기 때문에, 퀸들이 서로 공격하지 않도록 배치하는 것이 핵심입니다. 백트래킹을 사용하여 문제의 가능한 모든.. 2024. 9. 12.
그리디 알고리즘 (Greedy Algorithms) 요약 그리디 알고리즘 (Greedy Algorithms)그리디 알고리즘은 매 순간 최선의 선택을 하는 방식으로, 전체 문제를 해결하는 방법입니다. 즉, 각 단계에서 가장 이득이 되는 선택을 함으로써 문제를 해결하며, 이를 통해 전체 문제에 대한 최적의 해답을 찾으려고 합니다. 그리디 알고리즘은 항상 최적의 해를 보장하지는 않지만, 여러 문제에서 매우 효율적으로 작동할 수 있습니다. 그리디 알고리즘을 사용하는 대표적인 문제로는 최소 신장 트리(MST)와 다익스트라 알고리즘이 있습니다.    1. 최소 신장 트리 (Minimum Spanning Tree)최소 신장 트리(MST)는 그래프 내의 모든 정점을 연결하면서 간선들의 가중치 합이 최소가 되는 트리를 찾는 문제입니다. 최소 신장 트리 알고리즘은 주로 연결 그.. 2024. 9. 12.
동적 프로그래밍 (Dynamic Programming) 요약 동적 프로그래밍 (Dynamic Programming)동적 프로그래밍(Dynamic Programming, DP)은 복잡한 문제를 작은 하위 문제로 나누어 해결하는 최적화 기법입니다. 동적 프로그래밍은 주로 재귀적으로 정의할 수 있는 문제에서 사용되며, 동일한 하위 문제가 여러 번 반복될 때, 이를 저장(memoization)하여 불필요한 계산을 줄여 성능을 개선합니다. 대표적인 동적 프로그래밍 문제로는 피보나치 수열, 배낭 문제, 최장 공통 부분 수열 등이 있습니다.    1. 피보나치 수열 (Fibonacci Sequence)피보나치 수열은 첫 두 항이 0과 1로 시작하고, 이후의 항은 바로 이전 두 항의 합으로 정의되는 수열입니다. 재귀적으로 정의할 수 있지만, 동일한 계산이 반복되기 때문에 동적 .. 2024. 9. 11.
분할 정복 알고리즘 (Divide and Conquer) 요약 분할 정복 알고리즘 (Divide and Conquer)분할 정복(Divide and Conquer)은 문제를 작은 부분으로 나누고, 각 부분을 개별적으로 해결한 후, 그 결과를 합쳐 최종 문제를 해결하는 알고리즘 설계 기법입니다. 주로 재귀적으로 문제를 해결하며, 복잡한 문제를 간단한 작은 문제로 분리하여 효율적으로 처리할 수 있습니다.    분할 정복의 3단계분할 (Divide): 문제를 더 작은 하위 문제로 나눕니다.정복 (Conquer): 각 하위 문제를 재귀적으로 해결합니다. 하위 문제가 충분히 작으면 직접 해결합니다.결합 (Combine): 하위 문제의 결과를 결합하여 원래 문제를 해결합니다.이제 대표적인 분할 정복 알고리즘인 퀵 정렬(Quick Sort)과 병합 정렬(Merge Sort)을 .. 2024. 9. 11.
탐색 알고리즘 (Searching Algorithms) 요약 탐색 알고리즘 (Searching Algorithms)탐색 알고리즘은 주어진 데이터 내에서 특정한 값을 찾는 방법을 정의합니다. 탐색 알고리즘은 주로 정렬된 또는 정렬되지 않은 배열, 트리, 그래프 등 다양한 자료구조에서 사용됩니다. 이 페이지에서는 대표적인 탐색 알고리즘인 선형 탐색, 이진 탐색, 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)을 설명합니다.    1. 선형 탐색 (Linear Search)선형 탐색은 데이터셋의 처음부터 끝까지 순차적으로 값을 비교하면서 탐색하는 방법입니다. 정렬되지 않은 배열에서도 사용할 수 있으며, 간단하고 직관적이지만 비효율적인 탐색 방법입니다.// 선형 탐색 예제 코드 (JavaScript)function linearSearch(arr, target) { .. 2024. 9. 11.