분류 전체보기 118

Understanding Prototype Chain

JavaScript? - > prototype기반의 언어. ES5까지는 class가 없었음. > sudo-classical ES6부터 calss 지원(하지만 그렇다고 해서 JS가 프로토타입 기반의 언어인 것은 변하지 않았음.) __proto__, constructor, prototype 이 각각 어떤 관계를 가지고 있는가? What is Object.create? ES6 class, super keyword 에 대해서 Prototype 상속 _proto_ : prototype을 확인할 수 있다. function Human(name) { this.name = name; } let steve = new Human('steve'); steve.__proto__ === Human.prototype; //true..

Codestates/Full IM 2020.07.29

Object Oriented Programming + Instantiation

OOP(Object Oriented Programming)? 프로그램밍의 패러다임 중 하나이며, 객체 지향 프로그래밍이라고 한다. 말 그대로 프로그램을 작성하는데 함수나 로직 기반보다는 객체 기반으로 한 패러다임이라고 보면된다. 여기서 객체는 속성과 동작을 가진 데이터 필드로 정의된다. 쉽게 말하자면 모든 것을 물체로 정의하려는 프로그래밍 패러다임이라고 보며 되며 , 크고 복잡한 문제들을 관리하는데 적합하다고 보면 된다. OPP Basic concept (객체 지향 프로그래밍의 특징) 기본적인 개념으로 Encapsulation, Inheritance, Abstraction, Polymorphism이 있다. Encapsulation(캡슐화) 외부에서 속성들을 Object에 쌓아 캡슐화 시키는 개념이다. 복..

Codestates/Full IM 2020.07.29

Data Structure Time Complexity

들어가기 전에 복잡도에 대해서는 Pre 과정에서 호용님이 강의하신 게 더 이해가 잘된다. 누군지는 모르겠지만 IM과정에 설명해주는 분의 강의는 봐도 잘 이해가 안 된다. Complexity Analysis Complexity Analysis In The Real World How does problem size affect the time and space required by particular algorithm? Complexity Analysis? 복잡도 분석이라고 할 수 있다. 그 중에서 시간복잡도란? 알고리즘이 그것을 푸는 데 있어서 시간과 공간을 도대체 얼마나 차지하는지를 나타내는 지표라고 보면 된다. Why is this important? Complexity helps us understa..

Codestates/Full IM 2020.07.27

Data Structure Graph, Tree, BST

Graph Graph란 node와 node를 연결하는 간선(edge)을 하나로 모아 놓은 Data Structure이다. 하지만 모든 노드들이 전부 서로 연결되어 있는 것은 아니다. 양방향으로 통행이 가능한 무방향 그래프와, 일반통행만 가능한 방향 그래프가 있다.무방향 = 양방향 통행 addNode(node) - 그래프에 노드를 추가합니다.(Methods) addEdge(fromNode, toNode) - fromNode와 toNode 사이의 간선을 추가합니다.(Methods) removeNode(node) - 그래프에서 노드를 삭제합니다.(Methods) removeEdge(fromNode, toNode) - fromNode와 toNode 사이의 간선을 삭제합니다.(Methods) hasEdge(fro..

Codestates/Full IM 2020.07.27

2020.07.24 IM 5일차, 작업 및 회고록.

어느덧 5일이라는 시간이 흘러 주말이 되었다. 정말 시간은 하루가 다르게 빠르게 지나가는것같았다. 준비가 될 된상태로 계속 흘러가는것이여서 빠르게 지나가는것처럼 느껴지는건지 아니면 나의 초초함이 커질수록 빠르게 지나가는것인지 어느것때문에 빠르게 지나가는건지 모르겠지만 그래도 과정만큼은 수강과 페어작업만큼은 잘 성실히 하는것을 보면서 그래도 이겨내고 있다는 것을 느낌을 받았던 5일간의 시간들이였다. 과정을 겪고 지금은 data structure에 대해서 하고있는데 역시 처음이다보니 나에겐 너무 크게 다왔으며, 모르는것을 질문도있지만 찾아보면서 하는과정도 지금은 적응하며 보면서 하고 있다 오늘까지 hash table에 대한것을 배우고 코드작성까지 해보았지만 완성하지는 못하였고 2개정도만 작성하고 페어시간이 ..

Data Structure Linked List, HashTable

노드는 어떻게 구성되어 있는가? 1. Linked List 연결 리스트는 그 크기가 동적인 자료구조로, 자료구조를 구성하는 요소, 우리는 이것을 노드(Node) 라고 부릅니다. 노드의 연결로 이루어진 자료 구조입니다. 연결 리스트의 어떠한 임의의 지점에 데이터의 추가와 삭제를 할 경우, O(1) (상수 시간)의 시간 복잡도를 갖습니다. 추가와 삭제에 대해 O(n) (선형 시간)의 복잡도를 갖는 배열과는 다르죠. 다만 이 추가와 삭제 속도에 대한 대가로, 연결 리스트의 각 노드는 인덱스를 갖지 않습니다. 그래서 어떤 특정 데이터를 연결 리스트에서 검색하고자 할 경우, 처음부터 전체 연결 리스트를 훑어야 하며, 이는 O(n) (선형 시간)의 복잡도를 필요로 합니다. 배열과 유사하다고 보인다면 비교를 해보자...

Codestates/Full IM 2020.07.24

Data Structure Stack, Queue

아래 자료구조에 대해 스스로 검색해보며 공부해보시기 바랍니다. 내가 찾아서 이해한 구조의 추상적 그림을 찾아서 보면서 이해하는 방식으로 공부를 했다. 스택 (Stack) 스택(stack) 다음과 같은 성질을 갖는 자료형입니다. 데이터를 집어넣을 수 있는 선형(linear) 자료형입니다. 나중에 집어넣은 데이터가 먼저 나옵니다. 이 특징을 줄여서 LIFO(Last In First Out)라고 부릅니다. 데이터를 집어넣는 push, 데이터를 추출하는 pop, 맨 나중에 집어넣은 데이터를 확인하는 peek 등의 작업을 할 수 있습니다. push(elemet) - 요소를 스택의 최상단에 추가합니다. pop() - 스택의 최상단에서 요소를 제거하고 반환합니다. size() - 스택의 현재 요소 개수를 반환합니다...

Codestates/Full IM 2020.07.23

Data Structure Intro

스프린트는 크게 네 가지 부분으로 나뉘어 진행됩니다. 스택과 큐 스택과 큐는 실생활에서도 흔히 볼 수 있는 형태의 자료구조로, 이번 스프린트에서 접하게 될 자료구조들 중 가장 간단한 자료구조입니다. 서로 비슷하면서도 다른 쌍둥이 같은 두 자료구조는, 간단한 만큼 많은 부분에서 활용 되므로 중요도는 가장 높습니다. 연결 리스트와 해시 테이블 배열처럼 여러 데이터를 선형적으로 담을 수 있는 연결 리스트에 대해 배워봅니다. 배열과 어떤 부분이 다른지에 대해 생각하면서 공부하면 도움이 될 것입니다. 또한 해시 테이블은 이번 스프린트에서 배울 자료구조들 중 가장 어렵고 다른 성격을 가지는 자료구조입니다. 공부하고 직접 구현할 땐 어렵게 느껴지겠지만, 해시 테이블의 장점을 직접 경험하게 된다면 모든 곳에서 해시 테..

Codestates/Full IM 2020.07.23

Immersive Prep [TIL] Fibonacci numbers

pair 와 함께 pass me 문제를 다시 review 하면서 잠시 오래 멈춰 생각해보았던 것을 작성해 본다. 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 일단 처음 코플릿문제와 함께 작성할때 식을 알아서 작성을 했다가 다시 리뷰할때 pair와 설명을 할때 f(n)이 5라면 f(7)이 되엇 7이 나와야하는데 5가 나와서 이상하다고 했던점에서 문제가 발생했었다. 바로 여기서 관점이 달라진다는건데 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3..

Codestates/Full IM 2020.07.22