2025/02/15 5

Greedy Algorithm(그리디 알고리즘)

✅ Greedy 알고리즘 (Greedy Algorithm)  Greedy 알고리즘은 매 단계에서 현재 상황에서 가장 좋아 보이는 선택을 하는 방식으로 문제를 해결하는 알고리즘입니다. 즉, 국소 최적해(local optimum)를 구하는 방식으로, 이를 통해 전체 최적해(global optimum)를 찾고자 합니다. Greedy 알고리즘은 직관적이고 빠르게 구현할 수 있지만, 모든 문제에 대해 최적의 해를 보장하지는 않습니다. 하지만 특정 유형의 문제에서는 매우 효율적이고 정확한 결과를 낼 수 있습니다. 항목내용알고리즘 정의각 단계에서 가장 좋은 선택을 하여 문제를 해결하는 방식특징1. 직관적이고 간단한 구현 2. 최적해 보장 안 됨 3. 빠른 실행 속도시간 복잡도보통 O(n log n) 또는 O(n) 정..

Python Algorithm 2025.02.15

Burte-Force Search (완전탐색)

✅ 완전탐색 (Brute Force Search)완전탐색(Brute Force Search)은 주어진 문제의 가능한 모든 경우의 수를 모두 탐색하여 정답을 찾아내는 알고리즘입니다. 모든 경우를 검토하므로, 해결책을 반드시 찾을 수 있지만, 경우의 수가 많을 경우 실행 시간이 급격히 증가하는 단점이 있습니다.완전탐색은 매우 직관적이고 간단한 접근 방식으로, 작은 문제나 계산량이 적은 경우에 유용하지만, 입력 크기가 커지면 비효율적입니다.항목내용알고리즘 정의가능한 모든 경우의 수를 다 확인하는 방식특징1. 간단한 구현 2. 항상 정답을 찾을 수 있음 3. 비효율적시간 복잡도O(n!) 또는 O(2^n), 경우의 수에 비례적합한 경우작은 문제나 다른 방법이 없을 때 유용단점입력 크기가 커질수록 시간이 급격히 증..

Python Algorithm 2025.02.15

Counting Sort(카운팅 정렬)

✅ Counting Sort(카운팅 정렬)시간 복잡도: O(n + k) 카운팅 정렬(Counting Sort)은 정수나 범위가 제한된 값을 정렬할 때 매우 효율적인 알고리즘입니다. 특히 값이 작고 범위가 제한적일 때 매우 빠르게 동작합니다. 카운팅 정렬은 비교 기반 정렬 알고리즘이 아니며, 대신 각 숫자의 등장 횟수를 세는 방식으로 정렬을 수행합니다.항목내용알고리즘 이름카운팅 정렬 (Counting Sort)시간 복잡도O(n + k)공간 복잡도O(k)정렬 방식비교 기반 정렬이 아닌 빈도수 기반 정렬사용 사례정수 값이나 작은 범위의 값들을 정렬할 때 유용장점- 매우 빠른 속도 (특히 값의 범위가 작을 때) - 안정적인 정렬단점- 값의 범위가 너무 크면 비효율적 - 공간 복잡도 문제 발생  ✅ 카운팅 정렬 ..

Bubble Sort (버블 정렬)

✅ Bubble Sort (버블 정렬)평균 시간복잡도 : O(n2)   버블 정렬(Bubble Sort)은 가장 간단한 정렬 알고리즘 중 하나로, 주어진 리스트에서 인접한 두 원소를 비교하고 교환하면서 정렬하는 방식입니다. 이름 그대로 버블(bubble)처럼, 가장 큰 수가 차례차례 리스트의 끝으로 "떠오르는" 모습을 비유하여 붙여졌습니다. 항목설명알고리즘 유형비교 기반 정렬시간 복잡도최악: O(n^2) 최선: O(n) 평균: O(n^2)공간 복잡도O(1)안정성안정적인 정렬적용데이터가 적고, 이미 정렬된 경우 최적화 가능단점큰 데이터에서 비효율적, O(n2)O(n^2)O(n2) 시간 복잡도 ✅버블정렬 특징버블 정렬의 동작 원리는 크게 반복문을 통한 비교와 교환으로 이루어집니다. 각 단계에서 가장 큰 수가..

Time Complexity(시간복잡도)

✅ Time Complexity(시간복잡도)알고리즘이 문제를 해결하는 데 걸리는 시간을 입력 크기에 따라 분석한 것입니다. 간단히 말해서, 주어진 알고리즘이 처리해야 할 데이터의 양이 커질수록, 그 알고리즘이 얼마나 더 오래 걸리는지를 나타내는 척도입니다. 시간 복잡도를 잘 이해하면, 프로그램을 더 효율적으로 만들 수 있습니다. 시간복잡도 분석 알고리즘의 성능을 분석할 때, 주로 입력 크기(n)에 대한 함수로 표현합니다. 예를 들어, 입력 크기가 두 배가 되면 알고리즘의 실행 시간이 어떻게 변하는지 알 수 있습니다. 가장 일반적인 시간 복잡도는 빅오 표기법(Big-O Notation)을 사용하여 나타냅니다. ✅ 빅오 표기법 표시간 복잡도설명 예시알고리즘O(1)상수 시간 – 입력 크기와 관계없이 실행 시간..

Python Algorithm 2025.02.15