분류 전체보기 90

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

재귀 (Recursion)

목표 - 재귀가 무엇이며, 어떻게 유용한지를 정의 - 재귀 함수(Recursive function) 작성의 두 가지 핵심 구성 요소를 이해 - Call Stack 이라는 것에 대한 학습 - Call Stack과 Recursive function 의 관계 재귀함수란 무엇인가? 재귀함수는 자기 자신을 호출하는 절차이다. Recursion이 사용되고 있는 곳 - JSON.parse / JSON.stringify - document.getElementById & DOM traversal algorithms - Object traversal (객체 순회) 재귀 함수 작성에서 두 가지 핵심 구성 요소 - 종료 조건 (재귀가 멈추는 시점을 정해줘야한다.) - 다른 입력값 (매번 다른 데이터를 가지고 함수를 호출해야 ..

Algorithm 2022.07.24

문제 해결 방법 - 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