2025/02/18 3

Knuth-Morris-Pratt (KMP 알고리즘)

✅Knuth-Morris-Pratt (KMP 알고리즘) KMP(Knuth-Morris-Pratt) 알고리즘은 문자열 검색(String Matching) 알고리즘 중 하나로, 텍스트에서 특정 패턴을 효율적으로 찾을 수 있는 방법입니다.일반적인 브루트 포스(완전 탐색) 방법(O(NM))은 불필요한 비교가 많아 비효율적입니다.KMP는 접두사-접미사 배열(Prefix Table, LPS 배열) 을 활용하여 중복되는 비교를 줄여 O(N + M) 시간 복잡도로 최적화합니다.1️⃣ KMP 알고리즘이 필요한 이유문자열 검색을 수행할 때, 일반적인 브루트 포스 방식을 사용하면 최악의 경우 O(NM) 시간이 걸립니다.하지만 KMP 알고리즘을 사용하면 O(N + M) 으로 줄일 수 있습니다.✔ KMP의 핵심 아이디어패턴 내..

Python Algorithm 2025.02.18

Two Pointer (투 포인터)

✅ Two Pointer (투 포인터) 알고리즘Two Pointer(투 포인터) 알고리즘은 배열이나 리스트에서 두 개의 포인터를 사용하여 문제를 해결하는 기법입니다.이 방법은 정렬된 배열, 부분 배열, 두 배열 간의 비교 문제에서 자주 활용됩니다. 활용 예시:배열 내에서 특정 조건을 만족하는 두 개의 값 찾기부분 배열의 특정 조건 만족 여부 판단두 개의 정렬된 리스트 병합 또는 비교 1️⃣ Two Pointer 기법이 필요한 이유일반적으로 브루트 포스(완전 탐색) 를 사용하면 시간 복잡도가 높아지기 때문에 효율적인 탐색 방법이 필요합니다.Two Pointer를 사용하면 불필요한 탐색을 줄이고 O(N) 또는 O(N log N) 시간 복잡도로 최적화할 수 있습니다.✔ Two Pointer의 핵심 아이디어두 ..

Python Algorithm 2025.02.18

Sliding Window(슬라이딩 윈도우)

✅Sliding Window (슬라이딩 윈도우) 알고리즘Sliding Window(슬라이딩 윈도우) 알고리즘은 배열 또는 리스트에서 일정한 크기의 범위를 유지하면서 이동하는 기법입니다. 즉, 고정된 크기(또는 가변 크기)의 윈도우를 활용하여 데이터를 효율적으로 탐색하는 방법입니다.활용 예시:배열, 문자열의 특정 범위 내 최대/최소값 찾기연속된 부분 배열의 합 계산 (최대 또는 최소 합 등)문자열 내 패턴 찾기 (애너그램, 부분 문자열 검색 등)1️⃣ Sliding Window 기법이 필요한 이유브루트 포스(완전 탐색) 를 사용하면 모든 경우를 검사해야 하므로 시간 복잡도가 높아 비효율적입니다.하지만 Sliding Window를 사용하면 불필요한 계산을 줄이고 효율적으로 문제를 해결할 수 있습니다. ✔ S..

Python Algorithm 2025.02.18