개인공부 108

TIL 53일차_비동기처리1: 콜백함수

비동기 비동기란? 요청과 결과가 동시에 일어나지 않는 것. 따라서 다른 요청이 들어오면, 이전 요청의결과를 기다리지 않고 새 요청을 수행한다. 자바스크립트에서 비동기 처리가 필요한 이유를 생각해보자. 화면에서 서버로 데이터를 요청했을 때, 서버가 언제 그요청에 대한 응답을 줄지도 모르는데 다른 코드를 실행 안한 채, 무작정 기다리고 있을수는 없다. 비동기 처리방식의 문제점 function getData(){ let tableData; $.get('https://domain.com/products/1', function(response) { tableData = response; }); return tableData; } console.log(getData()); // undefined getData()를..

TIL 52일차_알고리즘: 탐욕알고리즘과 동적계획법

알고리즘 ... 😭 하루이틀만에 머릿속에 너무많이 입력한 것 같다... 정리하자. 탐욕 알고리즘 (Greedy Algorithm) 여러 경우 중, 그 '순간' 에 최적이라고 생각하는 것을 선택해 나가는 방식. '순간'이라고 정의하는 선택은 Local하게는 최적이지만, 그 선택이 계속되어 Global하게 해답을 만들었을 때, 그것이 최적이라는 보장은 없다. Greedy Algorithm이 최적의 결과를 보장하기위해서는, Greedy Choice Property 와 Optimal substructure라는 두 가지 속성을 만족해야한다. Greedy Choice Property : subproblem의 해답이 다음 subproblem에 영향이 가지 않는다는 독립적인 연산 속성 Op..

TIL 51일차_알고리즘: 유클리드 호제법

호제법(互除法)이라는 말은 서로(互) 나누기(除) 때문에 붙여진 이름이다. 이 뜻의 '호제' 라는 단어가 따로 있지는 않다. 이 알고리즘은 유클리드의 원론에 적혀있는 내용으로, 인류 최초의 알고리즘이라 한다. 유클리드 호제법 개념 알고리즘의 골자는 다음과 같다. 두 양의 정수 a, b (a>b)에 대하여 a = bq + r (0

TIL 50일차_시간복잡도(Time Complexity)

시간복잡도 란? 시간복잡도를 한문장으로 정리하면 "입력값이 커짐에 다라 증가하는 시간의 비율" 이라고 할 수 있다. 이 시간 복잡도를 표기하는 방법은 여러가지가 있지만, Big-O 표기법 (빅오표기법) 이 가장 흔하게 사용된다. Big-O표기법은 최악의 경우 입력값이 증가함에 따라 시간복잡도가 얼마나 증가하는지 표기하는 방법이다. Big-O 표기법의 종류 아래는 빠른 시간복잡도 순으로 나열한 것이다. O(1) - O(logn) - O(n) - O(nlogn) - O(n^2) - O(2^n) - O(n!) 빅오표기법을 표기할 때는, 계수나 정수값들은 생략한다. 예를 들어, 입력값이 1 증가할때마다 코드의 실행시간이 2초씩 증가한다고 하면, '이 알고리즘은 O(2n) 이구나!' 라고 생각할 수..

TIL 49일차_Set 객체

Set객체에 대해 처음알았다!🤩 Set객체는 유일한 값을 저장하는 객체이다. 즉, 하나의 Set 내부의 어떠한 값이든 그 Set 콜렉션 내에서 유일한 값이다. 또한, Set은 객체이지만 키를 갖지 않는다. 요소값만을 갖는다!! Set 객체를 배열로 변환하는 3가지 방법 Array.from() const set = new Set([1, 2, 3]); const arr = Array.from(set); Spread Syntax const set = new Set([1, 2, 3]); const arr = [...set] forEach const set = new Set([1, 2, 3]); const arr = []; set.forEach((element) => { arr.push(element); }) S..

TIL 48일차_forEach메소드와 루프제어문

배열의 모든 요소를 함수에 입력하여 가공할 때 쓰는 forEach 메소드! 오늘 forEach메소드를 쓰다가 예외처리를 해줘야했는데 어떻게 처리해야할지 고민했다. 나는 forEach 메소드는 for루프안에서 각 요소를 함수에 넣어 실행시킨다고 생각했기때문에, for문의 continue를 써야할지, 함수의 return으로 함수를 중단시켜야할지 고민했는데, 결론부터 말하면 return을 쓰면 된다! forEach 메소드 내부에서의 예외처리 생각해보면 쉬운문제다.😋 forEach는 이미 내장되어있는 함수이고, 우리가 사용할 때 조작하는 내용은, 콜백함수안의 내용이다. 따라서 함수에 예외처리를 할때와 마찬가지로, return을 사용해주면 된다. let array = [1,2,3,4]; array.forEach(..