본문 바로가기
반응형

알고리즘34

다익스트라 알고리즘(Dijkstra's Algorithm) 총 정리 - 개념, 원리, 동작 예시, 시간복잡도, 장단점, 주의점, C언어, Java, Python 예시코드 다익스트라 알고리즘은 최단 경로를 찾는 대표적인 알고리즘으로, 그래프에서 하나의 시작 정점에서 다른 모든 정점까지의 최단 거리를 계산하는 데 사용됩니다. 이번 글에서는 다익스트라 알고리즘의 개념, 원리, 동작 과정, 시간 복잡도, 장단점, 주의점, 그리고 C, Java, Python 예제 코드를 자세히 다루겠습니다.   1. 다익스트라 알고리즘이란?다익스트라 알고리즘은 가중 그래프(Weight Graph)에서 특정한 한 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘입니다. 탐욕적인 접근법(Greedy Algorithm)을 기반으로 하며, 음의 가중치를 가지지 않는 그래프에서만 사용할 수 있습니다.  2. 다익스트라 알고리즘의 원리다익스트라 알고리즘은 다음과 같은 원리로 동작합니다.출발 노드를 .. 2025. 2. 7.
분할 정복(Divide and Conquer) 알고리즘 총 정리 - 개념, 원리, 동작예시, 장단점, 시간복잡도, C언어, Java, Python 예시코드 1. 분할 정복(Divide and Conquer) 알고리즘이란?분할 정복(Divide and Conquer) 알고리즘은 문제를 더 작은 하위 문제로 나누고(Divide), 각각을 독립적으로 해결한 후(Conquer), 그 결과를 합쳐서(Merge) 원래 문제의 해답을 도출하는 방식의 알고리즘입니다. 이 알고리즘은 재귀(Recursion)를 활용하여 문제를 단계적으로 해결하는 것이 특징입니다.   2. 분할 정복 알고리즘의 동작 원리분할 정복 알고리즘은 다음과 같은 세 가지 단계로 이루어집니다.분할(Divide): 문제를 동일한 유형의 작은 하위 문제로 나눕니다.정복(Conquer): 나눈 하위 문제를 개별적으로 해결합니다. 보통 이 단계에서 재귀적으로 호출됩니다.결합(Merge): 해결된 하위 문제들을.. 2025. 2. 7.
투포인터(Two Pointer) 알고리즘 총 정리 - 개념, 원리, 시간복잡도, 활용, 장단점, 주의점, C언어, Java, Python 예시코드 1. 투포인터 알고리즘이란?투포인터(Two Pointer) 알고리즘은 배열이나 리스트와 같은 선형 자료구조에서 두 개의 포인터를 사용하여 탐색 범위를 조절하며 문제를 해결하는 기법입니다. 주로 정렬된 배열에서 특정 조건을 만족하는 부분을 찾거나, 구간 합을 구하는 등의 문제에서 효과적으로 사용됩니다.  2. 투포인터 알고리즘의 동작 원리투포인터 알고리즘은 두 개의 포인터를 적절히 이동시키며 문제를 해결하는 방식입니다. 다음과 같은 원리로 동작합니다.예제: 정렬된 배열에서 특정 합을 갖는 두 수 찾기예를 들어, 정렬된 배열 [1, 3, 5, 7, 10, 15]에서 합이 12가 되는 두 수를 찾는 문제를 생각해 봅시다.초기 설정left 포인터를 배열의 첫 번째 요소(0번째 인덱스)에 위치시킵니다.right .. 2025. 2. 7.
버킷 정렬(Bucket Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 장단점, 주의점 버킷 정렬은 데이터를 여러 개의 "버킷"으로 나누고 각 버킷에 저장된 데이터를 정렬한 뒤, 이를 합쳐 최종 정렬을 완성하는 분산 기반 정렬 알고리즘입니다. 데이터가 균등 분포되어 있을수록 높은 효율을 발휘하며, 비교 기반 정렬보다 더 빠를 수 있습니다.  1. 버킷이란?버킷에 대한 자세한 개념은 아래 글에 상세한 예시와 함께 작성했습니다. 버킷 자체만으로도 코딩 테스트에 자주 나오는 개념이라 꼭 숙지하는 것이 중요합니다.2024.12.20 - [알고리즘] - 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코드) 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코코딩테스트 문제.. 2025. 1. 3.
반응형