CHUCK CHUCK 박사

잼잼 개발자

[Algorithm] Sorting - Bubble Sort

정렬 버블 정렬

Bubble Sort? 버블 정렬은 가장 간단한 정렬 알고리즘 중 하나로, 인접한 요소들을 비교하여 정렬하는 방식입니다. 이 알고리즘은 리스트를 반복적으로 순회하면서 인접한 두 요소를 비교하여 순서가 맞지 않으면 서로 교환하는 방식으로 동작합니다. 가장 큰 요소가 리스트의 끝으로 “버블”처럼 떠오르는 모습 때문에 이 이름이 붙었습니...

[Algorithm] Searches - Interpolation Search

탐색 보간 탐색

Interpolation Search? 보간 탐색(Interpolation Search)은 정렬된 배열에서 특정 값을 찾기 위한 탐색 알고리즘으로, 이진 탐색과 비슷하지만, 값의 분포를 활용하여 더 빠르게 탐색할 수 있습니다. 보간 탐색은 주어진 값이 배열의 어떤 위치에 있을지를 예측하여 그 위치에서 탐색을 시작합니다. 이 방식은 ...

[Algorithm] Searches - Binary Search

탐색 이진 탐색

Binary Search? 이진 탐색(Binary Search)은 정렬된 배열에서 값을 효율적으로 찾기 위한 알고리즘입니다. 이진 탐색은 배열을 절반으로 나누어 타겟 값이 어느 절반에 있는지 결정하고, 그 절반에서 다시 절반으로 나누는 과정을 반복합니다. 이 방식으로 탐색 범위를 빠르게 좁힐 수 있어 O(log n)의 시간 복잡도를...

[Algorithm] Searches - Jump Search

탐색 점프 탐색

Jump Search? 점프 탐색(Jump Search)는 선형 탐색(Linear Search)보다 효율적이지만 이진 탐색(Binary Search)만큼 빠르지 않은 중간 정도의 탐색 알고리즘입니다. 점프 탐색은 정렬된 배열에서만 작동하며, 일정한 크기(일반적으로 배열의 크기의 제곱근)를 점프하여 탐색을 수행한 후, 원하는 값이 있...

[Algorithm] Searches - Linear Search

탐색 선형 탐색

Linear Search? Linear Search(선형 탐색)은 가장 기본적인 탐색 알고리즘 중 하나로, 배열이나 리스트 같은 자료 구조에서 원하는 값을 찾을 때 첫 번째 요소부터 마지막 요소까지 순차적으로 비교하는 방식입니다. 이 알고리즘은 O(n)의 시간 복잡도를 가지며, 데이터가 정렬되지 않은 경우에 사용됩니다. 사용 사례...

[Algorithm] Strings - Regular Expression Matching

문자열 정규 표현식 매칭

Rabin-Karp? Rabin-Karp 알고리즘은 문자열에서 특정 패턴을 찾는 데 사용되는 효율적인 해시 기반 문자열 검색 알고리즘입니다. 이 알고리즘의 핵심은 해시 함수를 이용해 텍스트와 패턴의 해시 값을 계산하고, 이를 비교하여 패턴을 찾는 방식입니다. 동작 방식: 패턴과 텍스트의 첫 번째 부분의 해시 값을 계산합니다...

[Algorithm] Strings - Knuth–Morris–Pratt Algorithm

문자열 Knuth–Morris–Pratt

Knuth–Morris–Pratt(KMP)? KMP 알고리즘은 문자열 검색 알고리즘으로, 주어진 문자열 내에서 특정 패턴이 존재하는지, 또는 어디에 존재하는지를 효율적으로 찾는 방법입니다. 이 알고리즘은 패턴의 부분 일치 정보를 미리 계산하여 불필요한 비교를 피하는 방식으로 동작합니다. 알고리즘의 핵심 개념: Prefix ...

[Algorithm] Strings - Longest Common Substring Problem

문자열 LCS

Longest Common Substring? Longest Common Substring (LCS) 문제는 두 문자열 간에 가장 긴 공통 부분 문자열을 찾는 문제입니다. 이때, 부분 문자열은 문자열에서 연속된 문자들로 이루어진 부분을 말하며, 중간에 문자가 생략될 수는 없습니다. 어디에 사용되는지: 유전자 서열 비교: 유...

[Algorithm] Strings - Rabin Karp Algorithm

문자열 라빈 카프

Rabin-Karp? Rabin-Karp 알고리즘은 문자열에서 특정 패턴을 찾는 데 사용되는 효율적인 해시 기반 문자열 검색 알고리즘입니다. 이 알고리즘의 핵심은 해시 함수를 이용해 텍스트와 패턴의 해시 값을 계산하고, 이를 비교하여 패턴을 찾는 방식입니다. 동작 방식: 패턴과 텍스트의 첫 번째 부분의 해시 값을 계산합니다...

[Algorithm] Strings - Levenshtein Distance

문자열 레벤슈타인 거리

레벤슈타인 거리 (Levenshtein Distance)? 설명: 레벤슈타인 거리는 두 문자열 사이에서 하나의 문자열을 다른 문자열로 변환하기 위해 필요한 최소 편집 횟수를 의미합니다. 여기서 편집 작업은 삽입(Insertion), 삭제(Deletion), 교체(Substitution) 세 가지로 이루어집니다. 이 거리는 문자열 유...