본문 바로가기

자바스크립트34

Udemy - Javascript - Hash Table Udemy - Javascript - Hash Table Udemy JavaScript 해시 테이블 해시 테이블은, key와 value의 집합들이다 해시 테이블의 key들은 정렬이 안 되어 있다 파이썬에서는 Dictionary로 불린다 배열과 달리, 해시 테이블은, 요소를 찾을때, 삭제할 때, 새로운 요소를 추가할 때에 매우 빠르다 속도 때문에 해시 테이블을 많이 사용한다 해시 함수 key를 index같이 활용하고, value를 buckets 안에 넣는 것이다 key를 넣을때마다, key는 buckets의 특정 인덱스에 넣어지게 된다 2023. 2. 23.
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.
1. 디자인 패턴 (싱글톤 패턴 / 팩토리 패턴) 1. 디자인 패턴 (싱글톤 패턴 / 팩토리 패턴) 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 싱글톤 패턴, 팩토리 패턴 디자인 패턴 디자인 패턴은 프로그램을 설계할 때에 나타났던 문제점들을 객체 (Objects)간의 상호 관계를 이용하여 해결하려고 만든 '규약' 형태이다. 라이브러리, 프레임워크가 있다로직에 따라 반복적인 패턴을 라이브러리와 프레임 워크에 포함 하나의 코드로 프로그램을 설계할 수 있지만, 추후에 유지 보수를 하기 어렵다 한번에 많은 코드를 수정할 때에 번거롭거나, 오히려 에러를 발생 시킬 수 있다 디자인 패턴이라는 규약을 만들어서 모듈화를 했다 프로그래밍을 더 쉽게 할 수 있다 라이브러리 (Library) 공통으로 사용될 수 있는 기능들을 모듈화한 것이다 폴더명, 파일명 등 규.. 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.