2022/07/18 2

문제 해결 방법 - Divide and Conquer (분할 정복)

Divide and Conquer (분할 정복) 알고리즘 주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리할 때 사용한다. Lenear Search (선형 탐색) Lenear Search 는 정렬된 자료를 왼쪽부터 오른쪽으로 차례대로 탐색하는 알고리즘이다. Binary Search (이진 탐색) Binary Search 는 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 알고리즘이다. (단, 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있다. Binary Search는 큰 데이터셋을 취해 작은 하위 데이터셋으로 분할하고 다른 부분은 무시한다. 이는 곧 Divide and Conquer (분할정복) 의 일종으로 볼 수 있다. 본 내용은 작성자가 (Udemy) JavaScri..

Algorithm 2022.07.18

문제 해결 패턴 - Sliding Window

Sliding Window(슬라이딩 윈도우) 배열이나 문자열과 같은 일련의 데이터를 입력하거나 특정 방식으로 연속적인 해당 데이터의 하위 집합을 찾는 경우에 유용하다. 전자는 중첩된 루프문으로 배열에 숫자가 백만개 있을 경우 1,000,000 * 1,000,000 번 반복해야 하는 문제가 있다. 후자의 경우 루프를 배열에 한 번만 적용하여 O(n)으로 해결할 수 있다. 이것이 슬라이딩 윈도우 function maxSubarraySum(arr, num) { if (arr.length < num) return null; let tempMaxNum = 0; let maxNum = 0; for (let idx = 0; idx < num; idx++) { tempMaxNum += arr[idx]; } // tem..

Algorithm 2022.07.18