Algorithm 43

Insertion Sort (삽입 정렬)

Insertion Sort란 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 배열을 정렬한다. function swap(arr, idx1, idx2) { let temp = arr[idx1]; arr[idx1] = arr[idx2]; arr[idx2] = temp; } // insertionSort가 아니라 이상하게 bubble sort처럼? 해버림 // function insertionSort(arr) { // for (let i = 1; i 0; j--) { // if (arr[j] < arr[j - 1]) { // swap(arr, j, j - 1); // } // } // } //..

Algorithm 2022.08.07

정렬 알고리즘 소개

정렬 알고리즘이란? Collection의 항목을 재배열하는 과정 15개의 정렬 알고리즘 영상 (소리 주의!) https://www.youtube.com/watch?v=kPRA0W1kECg 정렬 알고리즘을 배워야 하는 이유 1. 정렬이 프로그래밍에서 흔하게 사용되기 때문. 2. 몇몇 알고리즘이 객관적으로 나머지보다 빠르기는 하지만, 특정 상황에서는 어떤 알고리즘이 더 빠르기 때문. 3. 정렬은 전형적인 면접 주제 정렬 알고리즘 애니메이션 (삽입, 선택, 버블, 셸, 합병, 힙, 퀵) https://www.toptal.com/developers/sorting-algorithms Sorting Algorithms Animations Animation, code, analysis, and discussion o..

Algorithm 2022.08.06

Binary Search

Binary Search(이진 탐색)은 정렬된 배열에서만 효과가 좋고, 분류되지 않았을때는 쓸모가 없다. console.log(binarySearch([1, 2, 3, 4, 5], 2)); // 1 console.log(binarySearch([1, 2, 3, 4, 5], 3)); // 2 console.log(binarySearch([1, 2, 3, 4, 5], 5)); // 4 console.log(binarySearch([1, 2, 3, 4, 5], 6)); // -1 console.log(binarySearch([5, 6, 10, 13, 14, 18, 30, 34, 35, 37, 40, 44, 64, 79, 84, 86, 95, 96, 98, 99], 10)); // 2 console.log(bi..

Algorithm 2022.07.31

Searching Algorithm

목표 - Searching Algorithm이 무엇인지 파악한다. - Linear Search를 구현한다. - 정렬된 배열에서의 Binary Search를 구현한다. - naive string searching algorithm을 구현한다. - KMP string searching algorithm을 구현한다. js에서 사용할 수 있는 검색 메소드 - indexOf - includes - find - findIndex => 이 메소드들은 첫부분에서 시작해서 끝부분으로 이동하면서 한번에 하나의 항목을 확인한다. => Linear Search (선형 검색) function linearSearch(arr, num) { for (const idx in arr) { if (arr[idx] === num) { re..

Algorithm 2022.07.27

Helper Method Recursion (+ Pure Recursion)

Helper Method Recursion 이란? 재귀적이지 않은 외부함수가 재귀적인 내부 함수(inner function)을 호출하는 패턴이다. Helper Method Recursion 는 일종의 결과를 컴파일할 때 흔히 사용되는 패턴이고, 결과는 보통 배열이나 배열과 비슷한 다른 형태의 데이터 구조이다. helper 입력받은 배열의 첫번째 숫자가 홀수인것만 result[]에 넣고, 첫번째 숫자를 제외한 배열을 새로 만들어서 다시 helper로 호출하고 있다. (나중에 그래프 데이터 구조를 구현할때 사용할 예정이라고 한다.) + Pure Recursion 으로 위의 함수를 구현한다면 대충 이런식으로 동작한다. (Helper Method Recursion 보다 코드수는 적지만 복잡한 감이 있다.) Pu..

Algorithm 2022.07.24

Call Stack

거의 모든 프로그래밍 언어에는 보이지 않는 곳에서 함수 호출을 관리하는 일종의 데이터 구조가 있다. js 에서는 Call Stack(호출 스택) 에서 한다. = Call Stack은 js의 보이지 않는 곳에서 작동하는 static data structure (정적 데이터 구조) 이다. js가 return keyword(반환 키워드)를 확인하거나, 함수 안에 더이상 실행할 코드가 없으면, compiler가 스택의 제일 위에 있는 항목을제거한다. => Call Sstack 는 종이 더미와 비슷하다고 생각하면된다. 제일 위에 있는 종이부터 쳐냄 (Stack) wakeUp()을 실행시키면 Call Stack은 사진과 같이 wakeUp -> eatBreakfast -> cookFood 순으로 쌓이며, 제일 위에 ..

Algorithm 2022.07.24