본문 바로가기

코딩공부

(3)
[Algorithm] 5. 이진 탐색(Binary Search) 알고리즘 흔히 for 문을 이용해 배열의 처음부터 끝까지 탐색하는 선형탐색은 O(n) 이라는 시간복잡도로 효율성이 떨어집니다.이를 보완하는 탐색 알고리즘으로 대체되는 이분탐색 (Binary Search, 이진 탐색이라고도 합니다 )은 O(log N) 의시간 복잡도를 가지고 있습니다.   주어진 범위의 절반씩 삭제하며 윈도우를 조절하며 찾아가는 기법으로주어진 배열은 순서대로 정렬이 되있어야 사용할 수 있는 알고리즘입니다. 32를 찾는 순서는 아래와 같이 절반의 범위를 줄여가며 진행됩니다   /** * 정렬된 배열에서 특정 요소의 인덱스를 찾는 이진 탐색 함수 * @param {Array} arr - 검색할 정렬된 배열 * @param {*} elem - 찾고자 하는 요소 * @returns {number} - 요소..
[javascript] 문자열을 배열로 변환하는 방법들 코테나 실무에서 문자열을 배열로 변환하여 로직을 작성해야하는 경우가 종종 있습니다그럴 때 사용하는 방법은 아래 3가지 중 편한 방법을 선택하시면 됩니다 1. split() 사용 const str = "hello";const arr1 = str.split(''); // ['h', 'e', 'l', 'l', 'o']const str = "hello"; const arr1 = str.split(''); // ['h', 'e', 'l', 'l', 'o'] 2. spread 연산자 사용 const arr2 = [...str]; // ['h', 'e', 'l', 'l', 'o']3. Array.from() 사용 const arr3 = Array.from(str); // ['h', 'e', 'l', 'l', 'o']
[Algorithm] 알고리즘 기본 패턴 2 - Multiple Pointers (다중 포인터) 1. 개념 배열이나 문자열에서 한 쌍의 값이나 조건을 찾을 때 사용인덱스 또는 위치에 해당하는 포인터 또는 값을 생성하고 특정 조건에 따라 시작, 끝 또는 중간으로 이동합니다.공간의 복잡성을 최소화하면서 문제를 해결하는 데 매우 효율적입니다.정렬된 배열에서 사용합니다 2. 특징시간 복잡도: 대부분 O(n) 공간 복잡도: O(1) (추가 공간이 거의 필요 없음) 주로 정렬된 배열에서 사용됨 두 개의 값을 비교하거나 특정 조건을 찾을 때 효과적3. 사용하는 경우중복 값 찾기 특정 합을 가진 쌍 찾기 팰린드롬 확인 배열에서 고유한 값 개수 세기  4. 예제 1) 정렬된 배열에서 합이 0인 쌍 찾기/** * 배열에서 합이 0이 되는 두 숫자를 찾는 함수 * @param {number[]} arr - 정렬된 숫자..