Dev/SW Engineering 46

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

4. DataStructure - Linked List, Hash Table

Linked List 1) 개념 자료구조 중 여러개의 변수를 저장하는 방법으로 배열(Array)와 링크드리스트(linked list)가 있다. 배열은 변수의 나열로, 장점은 i번째 원소를 바로 알 수 있다는 것이지만 단점은 원소의 추가, 삭제가 까다롭다. 반면 링크드 리스트는 각 원소가 node에 들어있고 이 Node는 값이 들어있는 data와 다음 원소를 가리키는 link로 구성되어 있으며 장점은 원소의 추가, 삭제가 쉽고, 단점은 i번째 원소를 알기 어렵고, 처음(head)부터 차근차근 따라 가야한다. 2) 구현 다음과 같은 method를 구현하세요 : addToTail(value) - 주어진 값을 연결 리스트의 끝에 추가한다. remove(value) - 주어진 값을 찾아서 연결을 해제(삭제)합니다..

Dev/SW Engineering 2020.05.24

3. Data Structure - Stack, Queue

Intro 자료구조에 대해 공부한 내용을 각 자료구조(Stack, Queue, Linked List, Hash Table, Graph, Tree, Binary Search Tree)에 대해 1. 개념 2. 구현 3. 해당 자료구조의 property와 method 4. Time Complexity에 대해 공부한 내용을 작성하였습니다. 컴퓨터와 소통하기 위해 다양한 프로그래밍 언어(C/C++, python, JavaScript...) 중 용도에 맞게 학습을 진행하였다면 자료를 저장하는 구조인 자료구조를 배우게 됩니다. 이 자료구조(Stack, Queue, Tree, Graph...) 역시 다양하며 특정 목적에 따라 그에 맞는 자료구조를 사용할 수 있어야 합니다. 따라서 각 자료구조의 목적이 무엇인지 이해하는..

Dev/SW Engineering 2020.05.24