전체 글
-
[JavaScript] async와 await란?Server/NodeJS 2020. 6. 25. 14:22
async와 await는 자바스크립트의 비동기 처리 패턴 중 최근에 나온 문법이다. 자바스크립트는 싱글스레드 기반 언어이기 때문에 비동기 처리가 필수적이다. 비동기 처리는 결과를 예측할 수 없기 때문에 동기식의 처리가 필요하다. 대표적으로 앞에 글에서 작성했던 것처럼 promise, callback이 있다. async와 await는 기존 동기식 처리의 단점을 보완하고 가독성을 높혀주는 코드를 작성할 수 있다. 먼저 다시 한번 자바스크립트의 비동기처리에 대해서 얘기하고 가려 한다. let first = 10; let second = 20; let result = 0; function add(x, y) { return x + y; } setTimeout(() => { result = add(first, se..
-
[JavaScript] Promise란 무엇인가?Server/NodeJS 2020. 6. 25. 01:17
저번 글에서 비동기 처리와 콜백함수에 대하여 간단히라도 공부하였다. 비동기 처리란 "특정 코드의 실행이 완료될 때 까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성"이다. function task1() { setTimeout( () => { console.log("task1"); }, 0); } function task2() { console.log("task2"); } function task3() { console.log("task3"); } task1(); task2(); task3(); 저번 글에서 setTimeout() 함수가 비동기 처리의 대표적인 예시라고 하였다. 위의 코드를 비동기의 개념을 모르고 출력결과를 예측해보라 한다면 아마도 task1 - task2 - task3 함..
-
최장 공통 부분 수열(LCS : Longest Common Subsequence)란?Computer Science/Algorithm 2020. 6. 21. 02:49
최장 공통 부분순서란? LCS란 Longest Common Subsequence의 약자로 최장 공통 부분 문자열이다. Subsequence는 부분 수열이라는 뜻으로 연속적이지 않아도 되는 부분 문자열이다. 한마디로 두 문자열을 비교할 때 공통적으로 나타나는 부분 순서들 중 가장 긴 것이다. 예를들어 "ABCBDAB"와 "BDCABA"의 LCS를 구하면 "BCBA"가 나오게 된다. 그리고 LCS는 최적화를 해야 하는 문제이기 때문에 동적계획법(DP)를 사용하여야 가장 효율적으로 구할 수 있다. 그러면 간단하게 LCS를 구하는 예시를 보면서 어떤 느낌인지 생각해보자. 문자열 "CAT"와 "CRAB"의 LCS를 구하여 보자. 위의 c[i][j]의 배열의 의미는 예를들어 c[1][2]라면 "CAT"에서는 C까지..
-
레드블랙트리(Red-Black-Tree)란?Computer Science/Data_Structure 2020. 6. 20. 02:45
https://devlog-wjdrbs96.tistory.com/42?category=824010 이진 탐색 트리(binary search tree) 란? 이진 탐색 트리(binary search tree)는 이진 트리 기반의 탐색을 위한 자료 구조이다. 탐색은 내가 생각하기에도 코딩테스트와 같은 곳에서도 자주 출제가 되며 또한 컴퓨터 프로그램에서도 많이 �� devlog-wjdrbs96.tistory.com 기본적으로 레드블랙트리를 알기 위해서는 이진탐색트리가 무엇인지 알고 있어야 한다. 따라서 잘 모른다면 위의 글을 먼저 읽어보는 것을 추천하고, 안다는 가정하에 글을 써보려 한다. 이진 탐색 트리의 분석 위와 같은 이진탐색트리 연산은 트리의 높이가 log2n이기 때문에 평균적인 경우의 시간복잡도는 O..