Algorithm
-
그리디(Greedy) 알고리즘Algorithm & Data Structure/Algorithm 2024. 10. 26. 16:06
그리디(탐욕) 알고리즘은 매 순간 최적의 선택을 함으로써 전체 최적해에 도달하려는 알고리즘입니다. 즉, 문제 해결 과정에서 지금 당장 가장 좋아 보이는 선택을 계속해서 하는 방식입니다. 이러한 선택들은 각 단계에서 부분적인 최적해를 구성하고, 최종적으로 전체 최적해를 구성하는 데 도움을 줍니다.그리디 알고리즘의 특징국소 최적 선택(Local Optimal Choice): 그리디 알고리즘은 각 단계에서의 최적해를 구하려고 합니다. 이는 전체 문제의 최적해를 보장하기보다는 각 단계의 최적해를 보장하는 접근 방식입니다.문제 분할: 큰 문제를 여러 단계의 작은 문제로 나눕니다. 매 단계에서 현재 상황에서 최적의 선택을 하고, 그 선택을 기반으로 다음 단계로 넘어갑니다.한 번의 선택: 한 번 내린 선택은 이후의 ..
-
조합(Combination)과 순열(Permutation)Algorithm & Data Structure/Algorithm 2024. 5. 4. 17:28
조합 (Combination) 조합은 주어진 집합에서 몇 개의 원소를 선택할 때, 선택 순서를 고려하지 않고 몇 가지 방법으로 선택할 수 있는지를 나타냅니다. 다시 말해, 조합은 "n개 중에서 k개를 선택하는 방법의 수"를 의미합니다. 예를 들어, 'A', 'B', 'C' 세 개의 원소에서 두 개를 선택하는 조합을 생각해 보면, 가능한 조합은 ('A', 'B'), ('A', 'C'), ('B', 'C')로 총 세 가지입니다. 여기서 중요한 점은 순서가 결과에 영향을 주지 않는다는 것입니다. 즉, ('A', 'B')와 ('B', 'A')는 같은 조합으로 간주됩니다.package mainimport ( "fmt")// combination 함수는 재귀적으로 조합을 생성하고 출력합니다.func combi..
-
Heap Sort(힙 정렬)Algorithm & Data Structure/Sort 2024. 4. 17. 23:25
힙정렬에 대해서 힙 정렬은 완전 이진 트리인 힙을 이용한 선택 정렬의 일종입니다. 배열 요소들을 힙 구조로 재배열한 다음, 가장 큰 요소(또는 가장 작은 요소)를 배열의 끝부분으로 이동시키는 과정을 반복하여 전체 배열을 정렬합니다. 현업에서는 어디에서 쓰일 수 있나? 힙 정렬은 데이터 스트림의 지속적인 입력과 동시에 최대값 또는 최소값을 빠르게 액세스해야 할 때 유용합니다. 따라서 실시간 처리 시스템, 운영 체제의 작업 스케줄링, 대용량 데이터의 배치 처리 등에 적합합니다. 힙 정렬 사이클 힙 정렬의 주요 사이클은 다음과 같이 진행됩니다: 힙 구성: 입력 배열을 최대 힙(max-heap) 또는 최소 힙(min-heap) 구조로 변환합니다. 요소 추출 및 재구성: 힙의 루트(최대값 또는 최소값)를 힙의 마..
-
Insertion Sort(삽입 정렬)Algorithm & Data Structure/Sort 2024. 3. 30. 00:18
Insertion sort 란? 삽입 정렬은 정렬되지 않은 리스트를 순차적으로 이미 정렬된 배열의 적절한 위치에 삽입하여 정렬을 완성하는 방식입니다. 이 알고리즘은 부분적으로 정렬된 배열을 유지하며, 각 반복에서 하나의 원소를 정렬된 배열 부분으로 이동시킵니다. Insertion sort 사이클 설명 삽입 정렬의 한 사이클은 다음과 같이 진행됩니다: 배열의 두 번째 요소를 선택합니다(첫 번째 요소는 이미 정렬된 상태로 간주). 선택된 요소를 그 이전의 요소들과 비교하여 적절한 위치를 찾습니다. 선택된 요소가 이전 요소보다 크면 그 위치에 삽입됩니다. 배열의 모든 요소가 이 과정을 거쳐 정렬될 때까지 반복합니다. 이 사이클은 배열의 각 요소가 올바른 위치에 있을 때까지 계속됩니다. Insertion sor..