자바스크립트 (13) 썸네일형 리스트형 [Algorithm] 알고리즘 기본 패턴 2 - Multiple Pointers (다중 포인터) 1. 개념 배열이나 문자열에서 한 쌍의 값이나 조건을 찾을 때 사용인덱스 또는 위치에 해당하는 포인터 또는 값을 생성하고 특정 조건에 따라 시작, 끝 또는 중간으로 이동합니다.공간의 복잡성을 최소화하면서 문제를 해결하는 데 매우 효율적입니다.정렬된 배열에서 사용합니다 2. 특징시간 복잡도: 대부분 O(n) 공간 복잡도: O(1) (추가 공간이 거의 필요 없음) 주로 정렬된 배열에서 사용됨 두 개의 값을 비교하거나 특정 조건을 찾을 때 효과적3. 사용하는 경우중복 값 찾기 특정 합을 가진 쌍 찾기 팰린드롬 확인 배열에서 고유한 값 개수 세기 4. 예제 1) 정렬된 배열에서 합이 0인 쌍 찾기/** * 배열에서 합이 0이 되는 두 숫자를 찾는 함수 * @param {number[]} arr - 정렬된 숫자.. [JavsScript] 함수의 부분 적용과 유연한 합성 3: curry - 인자를 유연하게 다루는 고차 함수 만들기 https://daunje0.tistory.com/174 [JavsScript] 함수의 합성과 데이터 파이프라인 2: pipe - 재사용 가능한 함수 파이프라인 만들기https://daunje0.tistory.com/173 [JavsScript] 함수의 합성과 데이터 파이프 라인 1. go함수를 값으로 다룰 수 있다는 자바스크립트의 특성 ( 일급함수 ) 때문에정말 다채로운 표현이 가능한 데, 그걸 배우는daunje0.tistory.com 위 블로그에서 계속 됩니다. const log = console.log const products = [ {name: '반팔티', price: 15000}, {name: '긴팔티', price: 20000}, {name: '핸드폰케이스', price.. [프로그래머스] Lv1) 소수 찾기 ( 에라토스테네스의 체, 소수 찾기 ) 1 부터 n 까지의 수 중에서 소수의 개수를 반환하는 문제 입니다이전 Lv1) 기사단원의 무기 문제에서 사용한 에라토스테네스의 체를 다시 이용하면 됩니다. function solution(n) {// idx 자체를 값으로 사용하기 위해 let isPrime = new Array(n + 1).fill(true); isPrime[0] = isPrime[1] = false;// 제곱근 까지만 계산 for (let i = 2; i * i e === true).length;} 제곱근 까지만 계산하는 이유는 아래 링크에 설명 되어있습니다.https://daunje0.tistory.com/135 limit ? power : e).reduce((a,b) => a+b);}이 코드는 시간복잡도가 O.. [프로그래머스] Lv1) 기사단원의 무기 ( 에라토스테네스의 체, 소수 , 약수 찾기 ) 이 문제는 약수 찾기의 문제입니다function solution(number, limit, power) { let arr = [] let count = 0 for(let i = 1; i e > limit ? power : e).reduce((a,b) => a+b);}이 코드는 시간복잡도가 O(n^2)이기에 시간초과로 fail 이 된 경우 입니다.시간 복잡도를 줄이기 위해서는 에라토스테네스의 체를 이용해야한는 것을 검색을 통해 힌트를 얻었습니다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두.. 두 수의 최대 공약수, 최소 공배수 구하기 (유클리드 호제법, 자바스크립트) 코테 준비를 하다보면 두 수의 최대 공약수를 구해야 하는 경우가 보인다. a = 100, b = 30 두수가 있을 때, a = b * x + y 에서 기존 b 에 a 를 넣고 b 자리에는 y를 넣어 반복 하고y가 0일 때의 b값이 최대 공약수가 된다 100 = 30 * 3 + 10 => a 에 30 b 에 나머지 10치환30 = 10 * 3 + 0 => 나머지 0 이므로 10이 최대공약수 가 된다. 코드화하면const GCD = (a, b) => { if (b === 0) return a; return GCD(b, a % b); };위 처럼 재귀함수화 하여 파라미터의 a 자리에 b를 대입하고, b 자리에는 나머지를 넣어주면 된다. 그럼 최소공배수를 구하는 법은? 두 수 a와 b의 .. 이전 1 2 다음