본문 바로가기
  • soldonii's devlog

Javascript 공부/Data Structure + Algorithms(-)22

자바스크립트 정렬 알고리즘 4 : Insertion Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 앞서 배운 Bubble Sort, Selection Sort의 경우 사실 교육적 목적을 제외하면, 실무에서 사용할 일은 거의 없다고 한다. 그러나 Insertion Sort는 경우에 따라서 가장 빠른 속도를 낼 수 있기 때문에 정확히 알아둬야 한다. Insertion Sort(삽입 정렬)를 사용하는 상황은 아래 조건이 충족될 때이다. 아래 조건에서는 그 어떤 정렬 알고리즘보다 Insertion Sort가 가장 빠른 속.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 3 : Selection Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]; function selectionSort(array) { const length = array.length; for (let i = 0; i < length; i++) { let minIdx = i; let temp = array[i]; for (let k = i+1; k < length; k++) { if (arra.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 2 : Bubble Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) Bubble Sort, Insertion Sort, Selection Sort 이 세가지가 주요 정렬 알고리즘 중 가장 우선적으로 배울 정렬 알고리즘이다. Merge Sort와 Quick Sort는 앞선 세 개보다 조금 더 Advanced한, 복잡한 알고리즘이다. 뒤의 두 개는 앞선 세 개보다 더 효율적이다. Bubble Sort의 작동 방식을 보면, 가장 구현하기에 간단하기는 하지만 가장 비효율적인 정렬 알고리즘이다.. 2019. 11. 3.
자바스크립트 정렬 알고리즘 1 : 왜 정렬 알고리즘을 배워야 할까? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 정렬 알고리즘을 배워야 하는 이유 const letters = ['a', 'd', 'z', 'e', 'r', 'b']; const basket = [2, 65, 34, 2, 1, 7, 8]; basket.sort(); // [1, 2, 2, 34, 65, 7, 8] basket 배열에서 자바스크립트에 내장된 정렬 메소드를 사용할 경우, 우리가 원하는대로 정렬이 이루어지지 않는다. 왜 그럴까? 자바스크립트에 내장된.. 2019. 11. 3.
자바스크립트 알고리즘 : 재귀함수란? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 재귀 함수란? 재귀 함수는 알고리즘이라기 보다는 문제를 해결하기 위한 컨셉, 코딩 패턴에 더 가깝다. 앞으로 배울 sorting, searching의 경우에 재귀를 많이 사용하게 될 예정이다. 쉽게 말해 재귀 함수란, 특정 함수가 함수 안에서 자기 자신을 다시 호출하는 것을 의미한다. 반복적인 sub task가 있을 때 사용하면 좋다. 2. 재귀 함수의 3가지 원칙 1. Base Case를 명확히 작성한다. 2... 2019. 11. 1.
자바스크립트의 자료구조 6 : 그래프(Graphs) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 그래프(Graphs)란? 각 노드들이 서로 연결되어 있는 자료 구조형으로, 아주 커다란 자료 구조형의 범위 중 하나이다. 실제로 그래프 자료 구조 안에 Trees 자료구조가 포함되어 있고, Trees 안에는 Linked List가 포함되어 있다. 즉, 그래프는 이들을 모두 포괄하고 있는 자료 구조형인 것이다. 그래프 자료구조를 묘사하는 방식에는 크게 3가지 방식이 있다. # Directed vs. Undirect.. 2019. 11. 1.
자바스크립트의 자료구조 5 : 트리(Trees) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 트리(Trees)란? 트리는 우리가 아는 나무를 거꾸로 뒤집어 놓은 형태를 생각하면 쉽다. 가장 위는 뿌리인 Root, 그리고 아래로 가지를 치면서 뻗어 내려온다. 2. 바이너리 트리(Binary Trees) 바이너리 트리는 각 노드가 하나 혹은 2개의 자식 노드만을 가지고 있는 상태의 트리구조이다. 하나의 노드는 아래와 같은 코드가 된다. function BinaryTreeNode(value) { this.va.. 2019. 10. 8.
자바스크립트의 자료구조 4 : 스택(Stack), 큐(Queue) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 스택(Stacks)과 큐(Queues)란? 스택과 큐 모두 Linear한 자료구조형이다. 이 둘은 아주 유사한 자료구조이지만, element가 제거되는 방식에 차이가 있다. - 스택 : 스택은 흔히 아는 자바스크립트 엔진에서의 콜 스택이 제거되는 방식과 동일하다. 마지막으로 삽입된 element가 가장 먼저 제거되는 방식을 취한다. LIFO(Last In, First Out)인 것이다. 따라서 스택은 브라우저 히.. 2019. 10. 8.
자바스크립트의 자료구조 3 : 연결 리스트(Linked List) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 연결 리스트(Linked List)란? Linked List는 1) value와 2) pointer가 한 쌍인 노드가 모여있는 자료구조형을 의미한다. 위 사진에서 푸른색 부분은 data를 저장하고 있고, 초록색 부분은 다음 노드를 가리키는 pointer 역할을 하는 address 부분이다. Linked List에서 가장 앞 쪽 시작부분(위 사진에서는 10을 가지고 있는 노드)을 Head, 가장 마지막 부분(40을.. 2019. 10. 8.