슈피치 테크블로그
article thumbnail
🍋 [Algorithm] Binary Search
🍒 Knowledge/Algorithm 2023. 5. 23. 19:39

🍋 Binary Search Binary Search Linear Search가 모든 항목을 탐색하는 방법이었다면, Binary Search는 그 보다 훨씬 빠른 형태의 탐색 방법이다. Binary Search는 한 번 확인할 때마다 남은 항목의 절반을 없앨 수 있다. 단, Binary Search는 정렬된 배열에서만 사용할 수 있다. Binary Search에 사용되는 주요 개념은 Divide and Conquer이다. Example : binarySearch Question 정렬된 배열과 하나의 값을 매개변수로 요구하는 함수를 작성한다. 함수는 인자로 들어온 값이 배열에 존재하면 해당 인덱스를 반환하고, 존재하지 않는다면 -1을 반환한다. binarySearch([1, 2, 3, 4, 5], 2); ..

article thumbnail
🍋 [Algorithm] Linear Search
🍒 Knowledge/Algorithm 2023. 5. 23. 16:16

🍋 Linear Search Linear Search 주어진 배열에서 모든 요소를 살펴 보면서 원하는 값이 있는지 확인하는 가장 간단한 방법의 탐색이다. JavaScript에는 배열에서 사용할 수 있는 다양한 탐색용 메소드가 존재한다. indexOf includes find findIndex Method Example const animal = ['rabbit', 'platypus', 'cat', 'dog']; /* indexOf */ animal.indexOf('rabbit'); // 0 animal.indexOf('dog'); // 3 animal.indexOf('bird'); // -1 /* includes */ animal.includes('platypus'); // true animal.incl..

article thumbnail
🍋 [Algorithm] Challenges - Recursion 3️⃣
🍒 Knowledge/Algorithm 2023. 5. 18. 12:07

🍋 Challenges - Recursion 3️⃣ Example : capitalizeFirst Question 문자열을 요소로 가진 배열을 매개변수로 요구하는 재귀 함수를 작성한다. 함수는 각 문자열의 첫번째 글자를 대문자로 변환한 문자열 배열을 반환한다. capitalizeFirst(['car', 'taco', 'banana']); // ['Car', 'Taco', 'Banana'] My solution function capitalizeFirst(strs) { if (strs.length === 0) return []; let upperStr = ''; for (let i = 0; i < strs[0].length; i++) { if (i === 0) upperStr = strs[0][i].toU..

article thumbnail
🍋 [Algorithm] Challenges - Recursion 2️⃣
🍒 Knowledge/Algorithm 2023. 5. 17. 15:42

🍋 Challenges - Recursion 2️⃣ Example : reverse Question 문자열을 매개변수로 요구하는 재귀 함수를 작성한다. 이 함수는 인자로 들어온 문자열을 반대로 출력한다. reverse('awesome'); // emosewa reverse('rithmschool'); // loohcsmhtir My solution function reverse(string) { if (string.length === 1) return string[0]; return string[string.length - 1] + reverse(string.slice(0, -1)); } Reference solution function reverse(str){ if(str.length val > 10)..

article thumbnail
🍋 [Algorithm] Challenges - Recursion 1️⃣
🍒 Knowledge/Algorithm 2023. 5. 17. 14:20

🍋 Challenges - Recursion 1️⃣ Example : power Question 밑과 지수를 매개변수로 요구하는 함수를 작성한다. 밑의 지수에 해당하는 거듭제곱을 반환해야하며 Math.pow()는 사용이 금지된다. (같은 기능을 수행해야 한다.) power(2, 0); // 1 power(2, 2); // 4 power(2, 4); // 16 My solution function power(base, exponent) { if (exponent === 0) return 1; return base * power(base, exponent - 1); } Reference solution function power(base, exponent){ if(exponent === 0) return 1..

article thumbnail
🍋 [Algorithm] Recursion - Helper Method
🍒 Knowledge/Algorithm 2023. 4. 27. 17:14

🍋 Recursion - Helper Method Helper Method pattern 외부 함수에 내부 재귀 함수를 정의하여 배열이나 데이터 목록 같은 걸 컴파일 할 때 사용하는 패턴 function outer(input) { let outerScopedVariable = []; function helper(helperInput) { // modify the outerScopedVariable helper(helperInput--); } helper(input); return outerScopedVariable; } Example : collectOddValues Question collectOddValues([1, 2, 3, 4, 5]); // [1, 3, 5] Pure recursion solut..

article thumbnail
🍋 [Algorithm] Recursion - Examples
🍒 Knowledge/Algorithm 2023. 4. 27. 15:45

🍋 Recursion - Examples Example : countDown Question countDown(5); /* 5 4 3 2 1 All done! */ Loop solution function countDown(num) { for (let i = num; i > 0; i--) { console.log(i); } console.log("All done!"); } Recursion solution function countDown(num) { if (num

article thumbnail
🍋 [Algorithm] Recursion
🍒 Knowledge/Algorithm 2023. 4. 18. 23:00

🍋 Recursion Recursion 주어진 문제를 해결하기 위해 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 방식이다. 한 가지 문제를 가지고 어떤 엔드 포인트에 도달할 때까지 더 작은 부분을 반복적으로 수행한다. 이 때 해당 엔드 포인트를 베이스 케이스라고 부른다. 🧒🏻 : 목록의 숫자들이 홀수인지 알려주세요. 🐲 : 난 목록의 첫 번째 숫자만 알려줄 것이다. 🧒🏻 : (3142 5798 6550 5914) 이 목록의 첫 번째 숫자는 홀수인가요? 🐲 : 그 숫자는 짝수이다. 🧒🏻 : (5798 6550 5914) 이 목록의 첫 번째 숫자는 홀수인가요? 🐲 : 그 숫자는 짝수이다. 🧒🏻 : (6550 5914) 이 목록의 첫 번째 숫자는 홀수인가요? 🐲 : 그 숫자는 짝수이다. 🧒🏻 : (5..

article thumbnail
🍋 [Algorithm] Challenges - Sliding Window
🍒 Knowledge/Algorithm 2023. 4. 12. 20:20

🍋 Challenges - Sliding Window Example : maxSubarraySum Question 정수 숫자 배열과 숫자 한 개(n)를 매개변수로 요구하는 함수를 작성한다. 배열의 하위 배열의 합 중 최댓값을 반환해야 하며 하위 배열의 길이는 n이다. (하위 배열은 원본 배열로부터 연속된 요소로 구성된 배열을 의미한다. [100, 200, 300, 400]의 하위배열 -> [100, 200, 300] ⭕️ [100, 300] ❌) maxSubarraySum([100, 200, 300, 400], 2); // 700 maxSubarraySum([1, 4, 2, 10, 23, 3, 1, 0, 20], 4); // 39 maxSubarraySum([3, -2, 7, -4, 1, -1, 4, -..

article thumbnail
🍋 [Algorithm] Challenges - Multiple Pointers
🍒 Knowledge/Algorithm 2023. 4. 12. 14:55

🍋 Challenges - Multiple Pointers Example : areThereDuplicate Question 다양한 요소를 매개변수로 받아들이는 함수를 작성한다. 인자에 중복되는 요소가 있는지 여부를 반환해야 한다. Frequency Counter 패턴 또는 Multiple Pointers 패턴으로 문제를 풀 수 있다. areThereDuplicate(1, 2, 3); // false areThereDuplicate(1, 2, 2); // true areThereDuplicate('a', 'b', 'c', 'a'); // true My solution // Multiple Pointers 패턴 function areThereDuplicates(...args) { let current = ..

profile on loading

Loading...