본문 바로가기

분류 전체보기

(72)
Kahoot Review - Inheritance pattern 다음 코드의 결과는? human에는 정의된 hello 메소드가 없으니까 그 부모인 Person을 탐색해본다. Person에도 정의된 hello메소드는 없으므로 답은 undefined가 된다. (잘못 생각한 부분) -> Student.prototype = Person.prototype 이라고 명시한 부분 때문에 Person.prototype.hello()를 입력하면 'hello, world' 가 콘솔에 나오게 된다. 그 때문에 Person의 인스턴스인 human에서도 hello 메서드가 출력된다. 답 : 'hello, world' 다음 코드의 결과는? Student.prototype에 위 문제에서처럼 person.prototype을 바로 할당하지 않고 Object.create(Person.prototype..
Bubble Sort Bubble Sort 바로 옆에 있는 요소와 비교해서 자리를 바꾸면서 정렬 바로 옆에 있는 요소와 비교한 후 자리를 바꾸는 방식으로 정렬한다. 큰 수를 뒤로 보내다보니 큰 수가 먼저 가장 마지막에 자리를 잡는다. 즉, 매번 반복할 때마다 i만큼의 수가 뒤에서부터 자리잡으니까 i개는 더이상 계산할 필요가 없다. 시간 복잡도 O(n^2) 구현하기 let bubbleSort = function(arr){ /* arr = [2,1,3] 2,1 비교 : 2가 1보다 크니까 1,2 로 자리를 바꾼다. 2,3 비교 : 2가 3보다 작으니까 자리 바꾸지 않는다. */ let swap for(let i = 0; i < arr.length-1; i++){ for(let j = 0; j < arr.length-1-i; j+..
pseudoclassical vs.ES 6 class 인스턴스화와 상속 (sprint) 코드스테이츠 immersive 4주차 과정 'inheritance patterns'에 대해 학습한 내용을 궁금했던 점들과 함께 정리해 보았다. 스프린트 내용 클래스 structur와 정해진 스펙에 따라 각 클래스를 구현한다. ES 6 Class Instantiation & Inheritance class Grub { constructor(age, color, food){ // 질문 1. this.age = 0; this.color = 'pink'; this.food = 'jelly'; } eat() { return 'Mmmmmmmmm jelly'; } } module.exports = Grub; 질문 1. constructor에 인자를 전달하지 않아도 되나? 전달 인자로 들어가는 값이 만들어질 insta..
ES6 Class 개념, ES5 vs.ES6 instantiation and inheritance ES6 Class 파헤치기 라는 글을 읽고 참고해서 다시 정리해 보았다. 좋은 글 감사합니다. ES6 class constructor super() Class JavaScript Class는 ECMAScript 6에서 소개되었다. Class 도 함수다. 함수를 선언식과 표현식으로 정의하는 것처럼 Class도 두 가지로 정의할 수 있다. instance의 속성은 반드시 class method 내에 정의되어야 한다. Class 선언식 함수 선언과 클래스 선언의 중요한 차이점은 함수 선언의 경우 호이스팅이 일어나지만, 클래스 선언은 그렇지 않다는 것이다. 클래스를 사용하기 위해서는 클래스를 먼저 선언 해야 하며, 그렇지 않으면 ReferenceError가 발생한다. class Car { constructor(..
Instantiation Patterns : instance를 만드는 여러가지 패턴들 ES6 class 키워드가 나오기 전에는 JavaScript를 객체지향적으로 사용하기 위한 다양한 시도가 있었다. 이러한 다양한 패턴 중 Pseudoclassical한 방법을 자세히 다루려고 한다. 그 중 Pseudoclassical한 방법은 ES6 class 키워드를 이용한 방법과 내부적으로 정확히 동일한 원리로 작동한다. Instantiation Patterns : JavaScript의 Class 가 나오기 전 사용하던 4가지 Class 선언 방식 1. Functional Instatiation 2. Functional Shared Instantiation 이전의 Functional 방식은 instance를 생성할 때마다 모든 메소드를 someInstanc..
OOP (Object Oriented Programming), concept, prototype 프로그래밍 언어 3 Machine Languages Assembly Languages HighLevel Languages ( 인간의 언어와 가까움, JavaScript) Machine Languages 0,1로만 조합 사람이 Machine Language로 프로그래밍을 하기는 어려움 Assembly Languages and 나 or 처럼 미리 저장되어 있는 기능들이 몇 개 있다. 컴퓨터가 프로세스하려면 machine language로 변환해야 한다. High-Level Languages 어셈블리어로 미리 함수를 만들어 놓고 그 함수를 사용할 수 있게 만든 언어 C : 현재에서 보면 어셈블리어에 가까움 java, C는 컴파일을 하지만 JavaScript는 하지 않음 java나 C는 컴파일을 거쳐서 어셈블리..
Complexity Analysis - 시간복잡도, Big-O Notation 복잡도 분석 어떤 문제를 푸는데 시간과 공간이 얼마나 필요한지에 대한 분석 시간과 공간 복잡도가 그 알고리즘이 얼마나 효율적인지를 나타내기 때문에 중요하다. 여기서는 시간 복잡도에 관한 내용만 다룬다. 아래 그림을 참고하여 두 수의 차가 가장 큰 수를 찾아보자. 방법 1. : 모든 숫자를 비교한다. 방법 2. : 가장 큰 수와 가장 작은 수를 찾은 후 (모든 수를 돌면서 가장 큰지/작은지 확인해야함) 비교한다. 방법 3. : 숫자가 정렬되어 있다면 가장 처음, 가장 마지막 숫자만 찾아서 비교한다. 시간 복잡도를 나타내는 방법 : Big-O Notation 보는 법 : 계산한 연산에서 상수를 제거하고 가장 큰 지수만 적어준다. O(1) : constant execution time : 일정한 시간을 유지한..
자료 구조 구현하기 - BST, graph, tree BST : Binary Search Tree pseudocode && implementation class BinarySearchTreeNode { constructor(value) { this.value = value; this.left = null; this.right = null; } 1. insert(value) 전달 인자로 받은 value 값이 현재 노드의 값보다 작으면 this.left 가 있는지 확인해서 있으면 this.left에 대해서 재귀하고 없으면 this.left에 새 노드를 추가한다. 전달 인자로 받은 value 값이 현재 노드의 값보다 크면 this.right 가 있는지 확인해서 있으면 this.right에 대해서 재귀하고 없으면 this.right에 새 노드를 추가한다. inse..