본문 바로가기
반응형

전체 글122

TIL 1030 .concat() vs .push() / setTimeout() concat() 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새로운 배열을 리턴 기존 배열은 변경되지 않는다 (immutable) push() 기존 배열에 마지막 요소를 추가하고, 배열은 새로운 길이 를 갖게되고 요소가 추가된 기존 배열의 새로운길이_를 리턴 _기존 배열에 새로운 요소를 추가하므로 기존 배열은 요소가 추가된 상태로 변경된다 setTimeout() setTimeout 메서드는 WindowTimers 객체의 메서드다. 첫번째 인자로 콜백함수를 전달하고, 두번째 인자로 지연시간을 전달해서 사용한다. 아래는 내가 과제를 진행하면서 사용하고 이해한 예시 step() { setTimeout(this.step.bind(this), this.timeBetweenSteps); //setTimeout.. 2020. 11. 1.
시간복잡도 big-O 시간복잡도 자료구조에 대해서 조회, 삽입, 변경(수정), 제거를 수행할 때 걸리는 시간과 입력의 함수 관계를 나타낸다. big-O 최악의 경우를 기준으로 시간 복잡도를 나타냄. 크기 비교(내림차순) O(n!) > O(2^n) > O(n^2) > O(nlog n) > O(n) > O(log n) > O(1) O(log n) < O(n) 항상 성립한다? &#39;항상&#39;은 아니다....단순히 값의 크기만 비교하는게 아니라 증가량의 차이도 고려하는 것 같다. (내용추가) big-Omega = 최선의 경우를 다루는 표기법 (하한점근선?) big-Theta = 최악, 최선의 중간경우를 다루는 표기법 종류는 이정도만 알고 넘어가자 자료구조별 시간복잡도 배열 Insert - O(n) 0번 인덱스에 삽입시 나머지.. 2020. 10. 28.
Object(인스턴스) 생성하는 4가지 방법 / Prototype 이란 Object(인스턴스)를 생성하는 방법 1.Functional var Car = function(){ var instance = {}; instance.position = 0; instance.move = function(){ this.position++; } return instance; }; //생성시에 인자를 전달해서 position의 초기값을 할당하는 방법. var Car = function(position){ var instance = {}; instance.position = position; instance.move = function(){ this.position++; } return instance; }; var car1 = Car(); var car2 = Car(); car1.move(.. 2020. 10. 28.
OOP (Object Oriented Programming) & Inheritance Patterns 프로그래밍 방식은 이분법적으로 나눌 수 있는게 아니다. "지향"이라는 단어를 사용한 만큼에 있어 어떤 방식에서 무엇을 좀더 중요시하며 프로그래밍을 할 뿐, 두 방식은 서로를 배제하지 않는다. 두 방식들이 공존하는 부분도 있다는 점 유의하자. 절차 지향 언어 프로그램을 하나의 절차로 묶어 기능들(함수)을 순서대로 실행함으로써 개발자가 의도한 대로 작업을 처리하는 방식. ex) C, COBOL, Fortran, Perl HTML 등 객체 지향 언어 "클래스"라고 불리는 데이터 모델들의 청사진(블루 프린트)를 사용해서 프로그래밍 하는 방식. 프로그램(프로젝트)의 모든 요소(속성, 메서드)는 객체를 이용해서 형성된다. ex) Java, C++, C#, Python, PHP, JavaScript, Ruby, Ob.. 2020. 10. 28.
Graph Tree BST Graph 그래프는 노드(Node, 정점 -vertex-)와 노드와 노드를 연결하는 간선(edge)로 구성된다. 간선은 방향가질수도, 무방향(undirected)일 수 있다. 진입 차수 진입 차수(in-degree): 방향 그래프에서 외부에서 오는 간선의 수 (내차수 라고도 부름) 진출 차수(out-degree): 방향 그래프에서 외부로 향하는 간선의 수 (외차수 라고도 부름) 방향 그래프에 있는 정점의 진입 차수 또는 진출 차수의 합 = 방향 그래프의 간선의 수(내차수 + 외차수) 인접 행렬 방식 NxN 불린 행렬(Boolean Matrix)로써 matrix[i][j]가 true라면 i -> j로의 간선이 있다는 뜻이다. V개의 노드를 표현하기 위해 V*V 만큼의 크기가 필요하므로 공간복잡도는 O(V^.. 2020. 10. 27.
IssueHandling) for..in vs for..of 배열을 for..in을 사용해서 순회하려다 계속해서 에러 핸들링에 실패해서 원인을 찾던 도중 발견했다. for..in 반복문을 사용할 때는 iterable한 객체의 모든 속성이 순회되기 때문에 단순히 배열의 요소만 순회되는 것이 아니다. ES6에 추가된 for..of 는 [ Symbol.iterator ] 속성을 갖는 컬렉션을 위한 것이다. forEach 함수는 익명함수를 사용해야 하므로 this 키워드를 사용할 때는 사용하지 않거나, 화살표 함수를 사용할 필요가 있다. 2020. 10. 26.
IssueHandling) 객체 접근시 주의점 obj[key] vs obj.key key가 변수이고 안에 obj의 어떤 키값이 들어있다고 할 때 obj[key]는 obj 의 key변수안의 값을 키로한 obj안의 밸류를 의미하고 obj.key 는 obj의 'key' 라는 키값의 밸류를 의미한다. 즉, obj.key === obj[ 'key' ] //true 키 값을 정확히 알고, 그 키값이 string 일 때만 .key를 사용할 수 있다. obj[key]는 다양하게 대괄호 안에 값을 넣을 수 있다. string 타입 변수를 넣어도 되고, number 타입 변수를 넣어도 되고, ''로 감싼 문자열을 넣어도 되고, ''로 감싸지 않은 문자열을 넣어도 된다. 만약 string 변수처럼 문자열 타입의 데이터가 들어있는 변수를 대괄호 안에 넣고 사용하게 되면, 변수 안의 문자열이 key가 되어 .. 2020. 10. 26.
Linked List, Hash Table Linked List 단일 연결 리스트는 노드가 바로 다음 노드 방향으로 단일 연결만을 갖는 구조이다. 때문에 탐색 방향이 한쪽으로 밖에 진행되지 않는다. 이중 연결 리스트는 노드가 앞뒤의 노드와 연결된 구조이다. 양쪽으로 탐색이 가능하기 때문에 탐색의 시작을 처음과 끝 둘 중에 하나로 지정할 수 있다. 연결리스트의 임의의 위치에 노드를 추가하거나 삭제할 때 O(1)의 상수시간만큼의 시간 복잡도를 갖는다. 배열은 추가와 삭제에 대해 O(N)의 선형시간 만큼의 복잡도를 갖는다 연결리스트는 인덱스를 갖지 않는다. 그렇기 때문에 특정 데이터를 리스트에서 조회하고자 할 경우, 처음부터 전체를 확인해야 하며 O(N)의 시간복잡도를 갖는다. 조회삽입삭제Linked ListO(N)O(1)O(1) Hash Table .. 2020. 10. 26.
Queue 큐 / Stack 스택 Queue 큐 큐는 일상생활에서 줄서기를 할 때와 동일한 형태로 동작하는 자료구조다. 먼저 줄을 서있던 사람이 먼저 줄에서 이탈한다. 큐도 마찬가지로 먼저 입력된 데이터가 먼저 제거된다. 시간복잡도 자료구조 조회 삽입 삭제 Queue O(n) O(1) O(1) Stack 스택 스택은 쌓여있는 접시를 사용할 때와 같은 구조다. 추가와 삭제는 스택의 최 상위에서만 수행할 수 있다. 가장 먼저 입력된 데이터가 가장 먼저 이탈한다. 시간복잡도 자료구조 조회 삽입 삭제 Stack O(n) O(1) O(1) 2020. 10. 26.
반응형