[알고리즘] 깊이 우선 탐색 : DFS(Depth-First-Search)
·
CS/알고리즘
📌  깊이 우선 탐색이란?그래프 탐색 기법그래프 완전 탐색 기법 중 하나그래프의 시작 노드에서 출발하여 하나의 분기를 정해 최대 깊이까지 탐색이후, 탐색하지 않은 다른 분기로 이동해 탐색을 수행구현 방식재귀 함수나 스택을 사용해서 구현각 노드의 방문 여부를 기록하여 중복 탐색을 방지탐색 순서 깊이를 우선으로 탐색하기 때문에 한 방향으로 끝까지 탐색한 뒤 다시 되돌온다.미로 탐색 시, 한 방향으로 갈 수 있을 때까지 이동하다 막다른 길에 도달하면 이전 갈림길로 돌아가 다른 방향으로 탐색하는 과정과 유사하다.단순하지만 강력한 알고리즘DFS는 너비 우선 탐색(BFS)에 비해 상대적으로 구현이 간단함단순 검색 속도는 BFS보다 느릴 수 있으며, 경우에 따라 무한루프에 빠질 가능성도 있으므로 방문 기록이 중요함..
[알고리즘] 기수 정렬(Radix Sort)이란?
·
CS/알고리즘
정렬 알고리즘정의버블 (bubble)데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 선택 (selection)대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식삽입 (insertion)대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식퀵 (quick)pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식병합 (merge)이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식기수 (radix)데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식  📌 기수 정렬이란?값을 비교하지 않고 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식시간 복잡도 : O(kn) ➡️ k는 데이터의 자릿수ex) 234,..
[알고리즘] 병합 정렬(Merge Sort)이란?
·
CS/알고리즘
정렬 알고리즘정의버블 (bubble)데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 선택 (selection)대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식삽입 (insertion)대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식퀵 (quick)pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식병합 (merge)이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식기수 (radix)데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식 📌 병합 정렬이란?이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식분할 정복(divide and conquer) 방식을 사용해 데이터를 분할하고 ..
[알고리즘] 퀵 정렬(Quick Sort)이란?
·
CS/알고리즘
📌 정렬 알고리즘 종류정렬 알고리즘정의버블 (bubble)데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식선택 (selection)대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식삽입 (insertion)대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식퀵 (quick)pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식병합 (merge)이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식기수 (radix)데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식  📌 퀵 정렬이란?pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식 시간 복잡도 : O(nlogn) → 기준값 선정에 따라 큰 영향을..