본문 바로가기

Programming/TIL

(33)
Async & Callback & Promise Achievement Goals 어떤 경우에 중첩된 callback이 발생하는지 이해할 수 있다. 중첩된 callback의 단점, Promise 의 장점을 이해할 수 있다. Promise 사용 패턴과 언어적인 특징들을 이해할 수 있다. resolve, reject의 의미와, then, catch와의 관계를 이해할 수 있다. Promise 에서 인자를 넘기는 방법에 대해 이해할 수 있다. Promise의 세가지 상태를 이해할 수 있다. Promise.all 의 사용법을 이해할 수 있다. async/await keyword에 대해 이해하고, 작동 원리를 이해할 수 있다. node.js의 fs 모듈의 사용법을 이해한다. Asynchronous 비동기가 무엇인지에 대해 먼저 알아보자. 비동기는 우리 생활속에서 ..
Data Structure(5) Graph What Is A Graph? Simply put, a graph is a collection of nodes with edges between them. * If a node n1 is connected to another node n2 with an edge, we say n1 is adjacent to n2. 그래프는, 각 노드들이 간선들로 서로 연결되어 있는 자료 구조형으로, 아주 커다란 자료 구조형의 범위 중 하나이다. * Graph > Tree > Linked List 순으로, Graph는 이들을 포괄하고 있는 자료구조형이다. Graph의 기본 용어 : Vertex = Node Edge : 간선. * 노드와 노드를 연결시켜 주는 역할을 한다. Graph의 특징 : - 한 Vertex에서 2개 ..
Data Structure(4) Tree Tree Tree는 노드로 구성된 계층적 자료구조이다. 트리는 우리가 아는 나무를 거꾸로 뒤집어 놓은 형태를 생각하면 쉽다 Tree 자료구조의 구성 : 1. Root - Tree의 최상단에 위치한 뿌리노드. Ex. A 2. Parent Node - 부모 노드들. Ex. A, B, C, D, E 3. Child Node - 자식 노드들. Ex. 'A' Root를 제외한 모든 노드. 4. Siblings - 형제 노드. Ex. "B, C" / "D, E" / "F, G" / "H, I" 5. Leaf Node - 자식들이 더 없는 최하단 노드 Ex. F, G, H, I, J 6. Edge - 노드와 노드를 잇는 선 7. Depth - Root를 기준으로, 다른 노드로 접근하기 위한 거리 Tree 구조에서 사..
Data Structure(3) Hash Table 1. Hash Table 어떤 특정 키값을 받으면 그 값을 해시 함수에 통과시켜 나온 인덱스(index)에 저장하는 자료구조이다. 그렇다면 "해시 함수"는 뭐고 "해시"는 뭘까? 해시 함수 : 임의의 길이를 가지는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시(Hash) : 1. 간단히 말하면, 해시함수가 뱉어내는 결과물이다. 2. 단방향 암호화 기법으로 해시함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열로 변환하는 것을 의미한다. 3. 저장소(bucket, slot)에서 값(value)과 매칭되어 저장된다. 해시값(Hash value) : 매핑 후 데이터의 값을 의미한다. 저장소(bucket, slot)에 최종적으로 저장되는 값이다. 해싱(hashing) : 매핑하는 과..
Data Structure(2) Linked List 1. Linked List '"연결 리스트"는 Node들로 구성이 되어있다. Ex. [Node] - [Node] - [Node] - [Node] "연결 리스트" : 강강수월래를 일자로 편 것과 같다. * 사용 예시 : 플레이 리스트, 이미지 뷰어, 등등. * 검색 키워드 : linked list real life example Node : 자료구조를 구성하는 요소 Node의 구성 : 1. value 2. next Node → next Node : 리스트에 다음으로 연결되는 노드이다. Linked List : Methods : * 링크(포인터)를 통해서 데이터 추가/삭제/탐색이 가능하다. * 포인터란 : 각 노드를 연결해주는 화살표 (예시: 강강수월래 할 때 각 사람의 손) 아래 코드는 Linked Lis..
Big O Big O 표기법 Binary Heaps are great for processing data in a specific order — Insertion and removal are both in O(log n) time. Searching is O(n), so if you’re looking for something faster, I would suggest using a Binary Search Tree if possible. Big O 표기법 빠르게 살펴보기 Big O 표기법은 알고리즘이 걸리는데 필요한 시간의 수학적인 표현이라고 할 수 있다. * 일반적으로 최악의 시나리오를 상정했을 때의 복잡도를 의미한다. 알고리즘의 효율성을 판별하는 중요한 기법 크게 네가지 경우가 있다. 1. O(1) 2. O(..
Data Structure(1) Stack & Queue 1. Stack LIFO: Last In, First Out. [후입선출] Stack 설명 예시 1. Stack은 쌓여있는 접시 더미와 같이 작동한다. 새로운 접시가 쌓일 때도 맨 위에서 쌓이고, 접시를 가져갈 때도 맨 위에서 가지고 가는 것과 같다. (LIFO: last in, first out). Stack 설명 예시 2. Stack은 하노이의 탑과 비슷한 원리를 갖는다. * Stack에는 할당된 공간이 있다. → Stackoverflow / "Maximum stack exceeded" 발생! Stack 구조에 사용되는 메소드들 : - 데이터 요소를 스택의 최상단에 추가하는 push(element) - 스택의 최상단에서 데이터 요소를 제거하고 반환하는 pop() 아래 코드는 직접 Stack을 가지고 ..
ESlint ESLint는 문법을 교정해주는 Grammarly 프로그램과 같은 역할을 한다. Linter를 이용하면 단순히 문법을 고쳐줄 뿐만 아니라, VSC에서 코딩 스타일까지 점검해준다. * 개발자가 원하는 추가 규칙들까지 직접 넣어서 작성한 코드를 검사할 수가 있다. ESLint Installation 자, 그럼 ESLint는 어떻게 설치할 수 있나? ESLint의 공식 홈페이지가 있다. 구글링을 통한 다른 블로그나 글보다 공식 문서를 참고하는 것이 항상 좋다. 공식 문서를 따라 ESLint를 Sprint Repository에 설치하자. * npm 혹은 yarn을 통해 설치할 수 있는데, npm만 먼저 알아보자. "npm install eslint --save-dev" * 설치가 잘 되었다면, package.j..