전체 글68 [JS 클린코드] 변수 다루기 1.var를 지양하자 let, const는 es2015에 추가되었다. var는 함수 스코프 let,const 블록 스코프를 가진다. TDZ속성을 가진다. var name = '이름' var name = '이름2' // 에러가 발생하지 않는다. var name = '이름3' var name = '이름3' console.log(name) // 이름3 console.log(name) // undefined var name = '이름3' var name = '이름3' var name = '이름3' //에러가 나오지 않고 재할당을 넘어서 재선언까지 계속 할 수 있다 //let , const는 에러가 발생한다 let , const 의 차이는 재할당이다 let은 언제든지 재할당 할 수 있다. 2. function s.. 2022. 12. 23. [JS] 해시테이블 해시 테이블이란? key-value 쌍을 저장하는 데 사용한다. key 순서를 갖지 않는다. 값을 찾거나 추가하거나 제거하는데 빠르다 거의 모든 언어들은 해시 테이블 종류의 구조를 가지고 있다. 그러나 학습을 위해 해쉬테이블을 새로 만들어본다. key를 갖고 value를 찾으려고 하면, key를 배열의 유효한 인덱스로 변환하는 방법이 필요하다. 이러한 기능을 하는 함수를 해시 함수(Hash fucntion) 라고 부른다. key를 해시 함수에 입력하면, key들은 각각 항상 같은 인덱스(숫자)들로 변환돼야 한다. 하지만 반대로는 변환이 불가하다. 즉, 해시된 인덱스를 key로 변환할 수는 없다. 해시 함수는 단방향 함수이다. 좋은 해시 함수의 조건 (보안 목적은 고려하지 않음) 속도가 빠르다(ex, O(.. 2022. 12. 22. [JS] 이진 힙 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 이진 트리. 짧게 힙(Heap)이라고 줄여서 부르기도 한다. 이진 힙 이진 힙은 이진탐색트리(BST)와 아주 유사하지만, 다음과 같은 몇 가지 규칙이 다르다. 최대 이진 힙(MaxBinaryHeap)에서는 부모 노드가 항상 자식 노드들보다 커야 한다. 최소 이진 힙(MinBinaryHeap)에서는 부모 노드가 항상 자식 노드들보다 작아야 한다. 이진 힙에서 부모와 자식 노드 간의 관계는 위와 같이 크거나 작아야 하지만, 형제 노드들 간의 관계에는 그러한 규칙이 없다. 이진 힙은 언제가 가능한 가장 적은 최적의 공간만을 차지한다. 아래 이미지와 같은 트리가 최대 이진 힙(MaxBinaryHeap) 이다. 부모 노드들이 항상 자식 노드들보다.. 2022. 12. 21. [JS] 트리 순회 1.너비우선탐색 BFS BFS() { let node = this.root; let data = []; let queue = []; queue.push(node); //queue에 노드가 있는 동안 루프를 돈다. while (queue.length) { node = queue.shift(); //dequeue된 노드 값을 data에 추가 data.push(node.val); //왼쪽있으면 왼쪽도 넣고 오른쪽있으면 오른쪽도 넣고 if (node.left) queue.push(node.left); if (node.right) queue.push(node.right); } return data; } 2. 깊이우선탐색 DFS 왼쪽으로 트리 수직방향으로 쭉 내려가서 탐색하는 방법 깊이우선탐색에는 세 가지 방법이 .. 2022. 12. 18. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음