Dev 84

13. Asynchronous & Promise - Asynchronous JS & Callback

+ Asynchronous JS & Callback 에 대해 공부한 것을 정리한 것입니다. 배우는 중이라 잘못된 내용이 있을 수 있으며 계속해서 보완해 나갈 것입니다. :)) 1. Asynchronous(비동기) Javascript 1) Asynchronous(비동기)란 무언인가 joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/ 이 글에서 에서 너무 설명을 잘 해주셨다. 식당을 예약한다고 할때, ① 동기적 방식으로 한다면 이런 식으로 진행된다. 원하는 동작(여기선 자리에 앉는다.에 해당)을 하기 위해서 손님은 '근처 가게에서 잠깐 쇼핑을 하지도, 다른 식당을 알아보지도 못하고' 예약한 식당에서 한없이 기다리..

Dev/SW Engineering 2020.07.21

12. Sprint 1/4 Assessment - 중간 점검

문제1. 다음의 코드를 실행시킨 후에 result값은 무엇인가? 답1. 10 line 1의 var x= 10과 line 3의 var x = 20의 x는 서로 다른 x로, line 3의 x는 outer 함수의 scope내에서만 유효한 x이기때문이다. 그래서 line 13의 x는 line 1의 x이다. 문제2. 다음의 코드를 실행시킨 후에 result값은 무엇인가? 답2. 30 get함수 내의 x는 새로 선언된 것이 아니므로 global value이다. 따라서 get(20)의 20은 아무 영향도 미치지 못하며 global x의 값인 30이 반환된다. 문제3. 다음 코드를 실행시키면 콘솔에 찍히는 것은? 답3. Window or the global object fn은 obj의 메소드가 아닌 독립적인 함수 fu..

Dev/SW Engineering 2020.06.14

11. Algorithms - Advanced Brute Force

Brute-Force Algorithms이란, 완전 탐색 알고리즘으로 모든 경우를 시도해봄으로써 답을 구한는 알고리즘이다. 완전 탐색을 하기에 간단한 경우는 모든 경우를 얼마나 돌아야 하는지 알고 있을 때이다. 1. 예를 들어, N개의 숫자 중에서 최소값을 구하라 는 문제가 있고, N가 N개의 숫자가 입력으로 주어진다면 mini = arr[0] for(let i=0; i arr[i]){ mini = arr[i]; } } 로 단순히 하나하나 모든 숫자를 비교할 수 있을 것이다. 그러나 이런 경우가 아닌 문제가 까다로운 것이다. 2. 예를 들어, N개의 알파벳 중에서 r개를 나열할 수 있는 경우를 모두 출력하시오 와 같은 문제라면, r이 달라짐에 따라서 반복문을 써야 하는 횟수도 r 번으로 달라진다. 이처럼..

Dev/SW Engineering 2020.06.11

10. Algorithms - Recursive Function

재귀함수(Recursive Function)란 자기 자신을 부르는 함수이다. 재귀함수의 의미는 무엇인가 재귀함수는 귀납적 계산 방법(귀납적 문제해결 방법)이라고 할 수 있다. 계산 방법에는 순차적 계산 방법과 귀납적 계산 방법 이라는 두 가지 방식이 있다. 먼저 순차적 계산 방법은 1. A를 계산한다. 2. A를 이용해서 B를 계산한다. 3. B를 이용해서 C를 계산한다 4. C를 이용해서 D를 계산함으로써 원하는 결과를 얻는다. 와 같이 순차적으로 진행하는 계산 방식이다. 예를 들어 n! = n x (n-1) x(n-2) ... x 2x1 과 같이 Factorial을 계산 하는 방법을 일컫는다. 두번째는 귀납적 계산 방식이다. 이는 1. 구하려고 하는 값을 f(x)라고 한다. 2. 그러면 f(x)를 구..

Dev/SW Engineering 2020.06.11

9. Inheritance Patterns - Pseudoclassical Inheritance

상속이란 상속(Inheritance)는 부모(Basic class)의 속성을 물려받는 것을 말합니다. 상속의 필요성 상속을 통해서 중복되는 코드를 부모코드가 제공하고 자식코드는 제공받습니다. 이를 통해 코드의 양도 줄이면서 부모 코드에 해당하는 부분이 수정되어야 하는 경우, 자식 코든는 하나씩 변경할 필요없이 동시에 변경이 되므로 유지, 보수에 편리합니다. 상속 방법 1) class를 통해서 상속하는 방법 주요 객체지향언어는 subclass가 superclass의 자식이 되고, 그렇게 자식이 된 subclass에서 객체(object)를 만들어낸다. 그림으로 나타내면, 이런 방식을 통해서 생성된 객체의 성질은 class로부터 이미 정해져 있습니다. 2) 객체를 통해서 상속하는 방식 JavaScript는 객..

Dev/SW Engineering 2020.06.11

8. Inheritance Patterns - Subclassing, Prototype chain

JavaScript는 객체가 직접 다른 객체를 상속받을 수 있고 얼마든지 prototype link를 통해서 상속 받을 부모 객체를 다른 객체로 바꿀 수 있습니다. 이처럼 JavaScript는 Prototype기능을 활용해서 OOP기능을 지원하려했으며, ES6에서 Class문법을 볼 수 있지만 이는 Class개념을 흉내낸 것 JavaScript가 Class 기반 언어처럼 작동하게 바뀌었다는 것은 아닙니다. Prototype Link와 Prototype Object 앞에서 JavaScript는 Prototype을 기반으로 OOP을 흉내 내도록 구현해서 사용한다고 하였고, 그림을 통해서 잠깐 Prototype Object와 Prototype link에 대한 언급을 하였습니다. Prototype Object와..

Dev/SW Engineering 2020.05.30

7. Inheritance Patterns - Instantiation Patterns

1. Instantiation이란 Instantiation은 인스턴스를 만드는 과정을 말한다. ES6의 class 개념이 나오기 전에 JavaScript를 객체지향적으로 사용하려는 많은 노력이 있었다. 이 여러 방법들에 대해 알아보고자 한다. 2. Functional Instantiation 방식의 Instantiation 이 방식은 말 그대로 function(함수)를 이용해서 class에서 instance를 찍어내는 방식이다. ex) var Car = function(){ 1st. Car라는 함수를 만들어준다. var someInstance = {}; 2nd. 이 함수를 실행했을 때, 만들 instance 객체를 선언하다. someInstance.position = 0; 3rd. Car함수가 실행되었을..

Dev/SW Engineering 2020.05.24

6. Inheritance Patterns - Object Oriented Programming

+ 200819 8/19일인 오늘에서 객체지향을 처음 배울 때 정리해 둔 아래의 글을 보니 많이 부족하고 부끄럽다. 아래의 두 reference를 읽었는데, 이를 정리해야할 것 같다. 1. https://woowabros.github.io/study/2016/07/07/think_object_oriented.html 생각하라, 객체지향처럼 - 우아한형제들 기술 블로그 2년차 쪼랩이가 객체지향을 처음으로 접하고 공부를 하면서 나름대로 정리해보았습니다. woowabros.github.io 2. 객체지향 생활 체조 - https://github.com/iamkyu/TIL/blob/master/.bak/object-calisthenics/object-calisthenics.md 1. OOP란 OOP(Object..

Dev/SW Engineering 2020.05.24

5. Data Structure - Time Complexity

1. Arrays (JS가 아닌 다른 언어)Memory 상에서 이어져 있는 자료구조이다. (primitive data structure) Time Complexity 1) Lookup(position) time complexity: O(1) 메모리상 이어 붙여져 있기 때문에 index로 바로 찾아갈 수 있기 때문이다. 2) Assign time complexity: O(1) 이것 역시 index 사용해서 다른 값 넣어주면 되니까. 3) Insert time complexity: O(n) 4) Remove time complexity: O(n) 앞의 Insert와 마찬가지로 삭제 후 그 뒤의 것들을 한 칸씩 옮겨 줘야 하니까 5) Find time complexity: O(n) 하나씩 확인하다가, 최악의 ..

Dev/SW Engineering 2020.05.24

5. Data Structure - Graph, Tree, BST

Graph 1)개념 : 노드(정점,Node, vertex) 와 간선(edge)로 구성된 자료구조 용어들 차수(Degree): 정점에 몇 개의 간선이 연결되어 있는가 사이클(Cycle): 자기 자신으로 다시 돌아올 수 있는 경로 2) 구현 그래프 구현 방식1: 인접 행렬 인접 행렬: 정점의 연결 관계를 2차원 배열에 0(연결x), 1(연결 o)로 표현하는 것 인접 행렬의 장점: 연결 여부를 O(1)만에 알 수 있다. 인접 행렬의 단점: 1. 인접한 정점을 찾는데 O(n)걸린다. 2. 실제 간선의 개수와 관계없이 무조건 n**2개의 칸을 써야 한다. 그래프 구현 방식2: 인접 리스트 인접 리스트: 각각의 정점에 대하여 인접한 정점 번호를 저장 인접 리스트의 장점: 1. 인접한 정점을 찾는데 해당 정점의 딱 ..

Dev/SW Engineering 2020.05.24