본문 바로가기
  • soldonii's devlog

udemy48

자바스크립트 정렬 알고리즘 6 : Quick Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) Quick Sort는 Merge Sort보다 직접 구현하기가 더 복잡하다. Quick Sort 또한 Divide and Conquer 개념을 사용하고, 동시에 Pivoting 개념을 활용한다. Quick Sort는 공간복잡도가 O(log n)으로 Merge Sort의 O(n)보다 메모리 효율성이 높은 알고리즘이다. 하지만 주의할 점은, worst 케이스의 경우 시간복잡도가 O(n^2)가 될 수 있다는 점이다. 특히 어.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 5 : Merge Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 앞서 살펴본 Bubble Sort, Selection Sort, Insertion Sort는 시간복잡도가 O(n^2)가 되기 때문에 무척이나 비효율적인 정렬 알고리즘이었다.(특정 조건에서 Insertion Sort는 제외. 자세한 것은 이 글에서 확인할 수 있다.) Merge Sort는 Divide and Conquer 및 recursion을 활용하는 로직이며, 따라서 O(n^2)에서 더 개선된 O(n log n)의 .. 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.
자바스크립트의 자료구조 6 : 그래프(Graphs) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 그래프(Graphs)란? 각 노드들이 서로 연결되어 있는 자료 구조형으로, 아주 커다란 자료 구조형의 범위 중 하나이다. 실제로 그래프 자료 구조 안에 Trees 자료구조가 포함되어 있고, Trees 안에는 Linked List가 포함되어 있다. 즉, 그래프는 이들을 모두 포괄하고 있는 자료 구조형인 것이다. 그래프 자료구조를 묘사하는 방식에는 크게 3가지 방식이 있다. # Directed vs. Undirect.. 2019. 11. 1.
자바스크립트의 함수형 프로그래밍 2 : 고차함수 *Udemy의 "Advanced Javascript Concepts"강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 고차 함수(Higher Order Function)와 클로져(Closure) // HOF const hof = () => () => 5; hof(); // [Function] hof()(); // 5 // Closure const closure = function() { let count = 0; return function increment() { count++; return count; } } const incrementFn = closure(); incremen.. 2019. 10. 22.
자바스크립트의 함수형 프로그래밍 1 : 순수 함수란? *Udemy의 "Advanced Javascript Concepts"강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 순수 함수(Pure Functions) 순수 함수란, 1. 함수 외부의 그 어떤 데이터(state)도 변경시키지 않는 함수(no side effect) 2. 동일한 input이면 언제나 동일한 output을 리턴하는 함수 const array = [1,2,3]; function a(arr) { arr.pop(); } function b(arr) { arr.forEach(item => arr.push(1)); } a(array); console.log(array); /.. 2019. 10. 22.
자바스크립트의 객체 지향 프로그래밍 2 : 클래스(Class) 사용 *Udemy의 "Advanced Javascript Concepts"강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 객체지향 프로그래밍의 마지막 단계 # OOP를 향한 마지막 5단계 : ES6 Classes class는 ES6에서 추가된 Syntactic Sugar로, 만들고자 하는 대상에 대한 청사진을 그려주는 역할을 한다. class Elf { constructor(name, weapon) { this.name = name; this.weapon = weapon; } attack() { return 'attack with ' + this.weapon; } } const pete.. 2019. 10. 20.