목록전체 글 (91)
Hello World...
자바스크립트 피보나치 for 문 이용 n 의 값 구하기 const fibonacci = function(n) { if (n === 0) return 0; // init let pre = 0; let cur = 1; let fin = 1; for (let i = 2; i < n; i++) { pre = cur; cur = fin; fin = pre + cur; } return fin; }; console.log(fibonacci(5)); //5 황금비로 유명한 피보나치 수열 0, 1, 1, 2, 3, 5, 8, 13, .... 0, 1, 1 은 초깃값으로 설정했으므로 n-2 를 해야 한다. 또는 i=2 로 설정해야 한다. (0,1,1// 2, 3, 5 ....)

자바스크립트는 자바, C++ 같은 클래스 타입 언어와는 달리 프로타입(prototype) 기반의 언어다. 그래서 별도의 클래스 문법이 없었는데, es6 (ECMA 2015) 버전부터 class 문법이 추가가 되었다. 하지만, 프로토타입에서 클래스타입으로 언어 자체가 바뀐 것이 아니라 문법적으로 지원하는 것이라고 한다. (언어 내부가 클래스 타입으로 재설계 된 것이 아님) 클래스 문법이 없다고는 하지만, 상속과 같은 객체지향 기능들은 사용이 가능하다. es5 function Car(name, speed) { this.name = name; this.speed = speed; } Car.prototype.run = function() { console.log(this.name + ' ' + this.spee..
자바스크립트 객체 참조. 객체 참조 const list = { head: null, tail: null }; let node = { value: 10, next: null }; list.tail = node; >> {value: 10, next: null} list.head = node; >> {value: 10, next: null} list.tail.next = {value: 2, next:null} >> {value: 2, next: null} list.head.next; >> {value: 2, next: null node 는 객체이므로 값 복사가 되는 것이 아니라 참조된다. list.tail 과 list.head 는 동일하게 node 객체를 가리키고 있다.

시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. -위키피디아 컴퓨터 과학에서 비효율적인 알고리즘을 사용하게 되면 경우에 따라서는 현재 컴퓨터 성능 기준으로 수억년이 걸릴 수 있다고 한다. constant logarithmic linear quadratic expoential O(1) O(log n) O(n) O(n^2) O(c^n) array - index 로 접근시 바로 접근 가능, 할당할 때도 O(1) - 추가, 삭제 하는 경우 기존 데이터의 위치를 재조정해야하므로 O(n) - 값을 찾는 경우(인덱스X) 처음부터 검색해야 하므로 O(n) Linked list - 헤드(HEAD)를 알아야 한다. - 값을 찾을 때는 헤드에서부터 찾아가는 방식이므로 찾기, 할당 O(n) - 추..
클로저란, 내부함수가 리턴되어도 외부함수의 변수를 참조할 수 있는 것을 말하는데, 객체가 리턴되어도 객체의 메소드도 외부함수의 변수를 참조할 수 있다. const L = function() { const s = []; const obj = {}; obj.push = function(v) { s.push(v); }; obj.get = function() { return s; }; return obj; }; const tl = L(); console.log(tl); tl.push(1); tl.push(2); console.log(tl.get()); // console // { push: [Function], get: [Function] } // [ 1, 2 ] obj 가 리턴되어도 obj 의 메소드를 이용해..

자료구조 Base 1.스택 Stack LIFO: 마지막에 들어간 데이터가 가장 먼저 나오는 구조이다. 비유를 들자면 장독 같은 거라고 보면 되겠다. 자바스크립트로 보자면 배열의 push 와 pop 이라고 생각하면 된다. const arr = [1,2]; arr.push(3); // [1,2,3] arr.pop(); // [1,2] 2.큐 Queue FIFO: 먼저 들어간 데이터가 가장 먼저 나오는 구조이다. 비유를 들자면 놀이동산에서의 줄서기라고 보면 되겠다. 자바스크립트 배열의 push와 shift 를 생각하면 된다. const arr = [1,2]; arr.push(3); // [1,2,3] arr.shift(); // [2,3] Advanced 1. Linked List Linked List는 Ar..
1. OOP OOP(Object-Oriented Programming) 객체지향은 프로그래밍 패러다임 중 하나로, 사람이 실제로 세계를 보고 이해하는 방식으로 프로그래밍을 하는 것을 말한다. (마치 사물 "thing"을 보는 것처럼) 객체지향 외 절차지향, 함수형 프로그래밍 등 여러 패러다임 존재한다. 객체지향은 절차형 프로그래밍으로는 복잡한 문제를 해결하기가 힘들어졌기 때문에 그 문제를 해결하기 위해 고안 되었다고 한다. 어떤 문제가 있고, 그 문제를 해결하는 과정 중에 프로그래밍 패러다임이 발전한 것이다. 그렇다고 객체지향이 만능이냐 하면 그렇지 않다. 문제를 해결하기 위한 하나의 방법일 뿐으로, 절차지향, 함수형 프로그래밍 등 다양한 방법론이 필요하다. * 중요 키워드 1. 추상화 ㄴ 불필요한 정보..