본문 바로가기

JavaScript32

Udemy - Javascript - Binary Heaps Udemy - Javascript - Binary Heaps Udemy JavaScript 이진 힙 MaxBinaryHeap : 부모 노드가 항상 자식 노드보다 크다 MinBinaryHeap : 부모 노드가 항상 자식 노드보다 작다 이진 힙은 항상 오른쪽과 왼쪽의 자식 노드를 채운다 MaxBinaryHeap 에서는 루트 노드가 제일 커야 한다 각 노드는 최대 2개의 자식을 가지고 있다 같은 층에 있는, 자식들은 부모 노드보다 작거나 큰거지, 서로의 관계는 상관이 없 인덱스 0의 자식은 1, 2 인덱스 1의 자식은 3과 4 인덱스 2의 자식은 5와 6 인덱스 3의 자식은 7, 8 즉 인덱스 n의 자식 노드를 구할 때에는 왼쪽 노드는 2n + 1 오른쪽 노드는 2n + 2 반대로 부모 노드를 구할 때에는 (.. 2023. 2. 22.
Udemy - Javascript - Tree Traversal Udemy - Javascript - Tree Traversal Udemy JavaScript 트리 순회 너비 우선 탐색 (Breadth First Search, BFS) Queue를 사용한다 [10, 7, 15, 5, 8, 20] 위의 리스트의 순서대로 탐색을 한다 class Node { constructor(value){ this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor() { this.root = null; } insert(value) { var newNode = new Node(value) if (this.root === null) { this.root = newNode; .. 2023. 2. 21.
Udemy - Javascript - Binary Tree Search Udemy - Javascript - Binary Tree Search Udemy JavaScript Tree 트리는 간선과 노드로 이루어져 있고, 노드들 간에 부모와 자식 노드라는 관계가 있다 1은 루트 노드이다 2와 3은 1의 자식 노드고, 1은 2와 3의 부모 노드다 트리가 아닌 것 이진 트리 / 이진 검색 트리 이진 트리 (Binary Tree) 이진 트리는 부모 노드가, 최대 2개의 자식 노드를 가지는 것이다 3개 이상의 자식 노드를 가지고 있으면 이진 트리가 아니다 이진 검색 트리 (Binary Search Tree) 이진 검색 트리는 정렬이 되어 있다 부모 노드보다 숫자가 적으면 왼쪽에 배치가 되어 있고, 크면 오른쪽에 배치가 되어 있다 루트 노드를 보면, 왼쪽에 있는 자식 노드는, 루트 노.. 2023. 2. 20.
Udemy - Javascript - Stack, Queue Udemy - Javascript - Stack, Queue Stack & Queue 데이터 구조의 모음이다 좀 더 압축적인 데이터 구조이다 데이터를 추가 또는 빼낸다 Stack (스택) LIFO (Last In First Out) 제일 마지막으로 스택에 추가된 것이, 제일 먼저 나간다 예를 들어, 재귀에서, 콜스택 (Call Stack)처럼, 제일 마지막에 추가된 요소를 먼저 빼낸다 배열로 스택 구현하기 // 스택 만들기 var stack = [] stack.push('google') stack.push('instagram') stack.push('youtube') stack.pop() // youtube stack.pop() // instagram stack.pop() // google 스택은 sta.. 2023. 2. 16.
Udemy - Javascript - Data Structure Udemy - Javascript - Data Structure Doubly Linked Lists (이중 연결 리스트) 자료구조 자료 구조는 데이터에 적용될 수 있는 값들 및 기능 혹은 작업들 사이의 관계를 포함한다 예를 들어 배열을 생각한다 배열 안에는 값들 사이에 관계가 있다 (정렬을 하거나, 값을 추가할 수 있거나 없앨 수 있다) 자료 구조에는 많은 종류가 있고, 각자 쓰임세가 다르다 이중 연결 리스트 이중 연결 리스트는, 다음 노드를 가리키는 간선이 2개이다 즉 앞에 노드와 뒤의 노드를 가리킨다 단점은 매모리를 단일 연결 리스트보다 더 많이 잡아 먹는다 class Node{ constructor(val){ this.val = val; this.next = null; this.prev = null.. 2023. 2. 14.
Udemy - Javascript - Data Structure Udemy - Javascript - Data Structure Singly Linked Lists (단일 연결 리스트) 자료구조 자료 구조는 데이터에 적용될 수 있는 값들 및 기능 혹은 작업들 사이의 관계를 포함한다 예를 들어 배열을 생각한다 배열 안에는 값들 사이에 관계가 있다 (정렬을 하거나, 값을 추가할 수 있거나 없앨 수 있다) 자료 구조에는 많은 종류가 있고, 각자 쓰임세가 다르다 연결 리스트 제일 앞과 뒤, 그리고 리스트의 길이 속성만 존재한다 즉 리스트 안에 index가 없다 노드로 존재한다 (노드끼리 연결되어 있음) 리스트 vs 배열 리스트 인덱스가 없다 노드들끼리 연결되어 있다. 그리고 노드들은 다음 노드를 POINT한다 랜덤으로 노드를 사용할 수 없다 배열 인덱스에 따라 나열되어 있다.. 2023. 2. 9.
Udemy - Javascript - Data Structure Udemy - Javascript - Data Structure 자료구조 자료 구조는 데이터에 적용될 수 있는 값들 및 기능 혹은 작업들 사이의 관계를 포함한다 예를 들어 배열을 생각한다 배열 안에는 값들 사이에 관계가 있다 (정렬을 하거나, 값을 추가할 수 있거나 없앨 수 있다) 자료 구조에는 많은 종류가 있고, 각자 쓰임세가 다르다 ES2015 자료 구조를 클래스로 만들 예정 What is Class? 클래스는 객체를 생성하기 위해 미리 속성 및 메소드를 정의한 블루프린트이다 class Student { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } } let firstStudent =.. 2023. 2. 7.
Udemy - Javascript - Radix Sort Udemy - Javascript - Radix Sort 정렬이란? 데이터가 있으면, 데이터를 숫자 또는 단어별로 오름차순 또는 내림차순으로 나열하는 것이다 정렬을 하는 방법은 다양하다. 정렬하는 방법마다, 정렬을 하는 시간은 다르다 버블, 선택, 삽입 정렬들은 숫자가 계속 늘어날 수록, 속도가 느려진다 반대로 합병 정렬, 퀵 정렬, 지수 정렬은 위의 3개보다 더 빠르다 기수 정렬 버블, 선택, 삽입, 합병, 퀵 정렬들은 모두 숫자들끼리 비교를 하면서, 정렬을 하는 것이다 정수만 정렬이 가는하다 자릿수가 더 많은 숫자가, 더 크다 라는 로직을 사용해서 정렬을 한다 4자리 수는 두 자리 수보다 크다 1 2 - 1의 자리 숫자들은 앞에 숫자가 없음으로 0에다가 넣으면 된다 3 - 0을 보면, 0에 들어오는 .. 2023. 2. 4.
Udemy - Javascript - Quick Sort Udemy - Javascript - Quick Sort 정렬이란? 데이터가 있으면, 데이터를 숫자 또는 단어별로 오름차순 또는 내림차순으로 나열하는 것이다 정렬을 하는 방법은 다양하다. 정렬하는 방법마다, 정렬을 하는 시간은 다르다 버블, 선택, 삽입 정렬들은 숫자가 계속 늘어날 수록, 속도가 느려진다 반대로 합병 정렬, 퀵 정렬, 지수 정렬은 위의 3개보다 더 빠르다 퀵 정렬 아무 숫자를 사용해도 된다 정한 숫자를 기준으로 그 숫자보다 작은 숫자들의 수를 샌다 그리고 그 새었던 수의 인덱스 값에 정한 숫자를 집어 넣으면, 그 index가 정한 숫자의 정렬된 위치라고 볼 수 있다 그리고 그 숫자 기준으로 왼쪽은, 그 숫자보다 작은 숫자들, 오른쪽은 그 숫자보다 큰 숫자들이어야 한 퀵 정렬 코드 구현 f.. 2023. 2. 1.