공부
-
라이브러리, 모듈, 프레임워크 란공부 2019. 2. 5. 21:30
무심코 사용하고 있는 용어들이 너무 햇갈린다...라이브러리(Library)와 모듈(Module)모듈의 의미는 구성 단위, 구성부분 이고 라이브러리는 도서관이라는 뜻을 가지고 있습니다. 개발에서는 라이브러리와 모듈을 동일한 의미라고 생각하면 됩니다. 자주 사용하게 되는 코드를 하나의 함수나 클래스라는 단위로 묶어서 코드를 재사용하게 됩니다. 즉, 이러한 함수 또는 클래스들을 모아서 라이브러리(library) 또는 모듈(module)이라 부릅니다. 라이브러리 또는 모듈은 개발자가 직접 만들 수도 있고 다른 사람이 만든 것을 설치받아 사용할 수도 있습니다. 다시 말해, 라이브러리와 모듈은 동일한 개념으로 재사용이 가능한 코드의 집합으로 볼 수 있습니다. 프레임워크(Framework)라이브러리와 모듈을 공통적으..
-
백업 vs 아카이브 차이점공부 2019. 1. 19. 16:51
백업과 아카이브는 엄연히 다른 기능입니다.백업이란?백업(Backup)은 데이터가 손상되거나 손실될 경우를 대비해 저장하는 데이터의 사본입니다. 원본 데이터는 백업을 생성한 후에도 지우지 않습니다. 백업의 예로 휴대폰의 사진을 클라우드에 복사하는 것부터 중요한 파일을 USB에 복사하는 등 다양합니다. 또한 파일 서버(비정형 데이터)와 데이터베이스(구조화 데이터)도 백업합니다. 이처럼 백업은 데이터를 그대로 복사하는 것에에 중점을 둡니다.백업은 사고가 났을 때 데이터를 복원(Restore)하는 것입니다. 만약 휴대폰의 모든 사진을 클라우드로 백업했는데 휴대폰이 고장났으면 클라우드에 백업한 파일을 그대로 내려받아 사용할 수 있으며 서버 내 랜섬웨어가 걸렸다면 랜섬웨어 해결 후, 백업한 데이터를 받아 정상적으로..
-
절차지향 VS 객체지향공부 2018. 12. 22. 18:35
절차지향(Procedural Programming)이란? 절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 대표적인 절차지향 언어에는 C언어가 있습니다. 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리합니다. 옛날에는 하드웨어와 소프트웨어의 개발 속도차이가 크지 않았습니다. 하지만 하드웨어의 빠른 발전을 통해 컴퓨팅 환경은 급속도로 증가했지만 소프트웨어 개발 시간이 따라가지 못하게 되고 이런 상황에 소프트웨어의 개발시간을 단축하되 하드웨어에 기본적인 사양을 잡아먹어도 더 이상 큰 단점이 아니기에 모듈화, 캡슐화해서 개념적으로 접근하는..
-
Sorting (Heap, Quick, Merge Sort)공부/자료구조 2018. 9. 30. 23:49
Heap SortHeapTree에서의 Heap을 사용 (Max Heap 또는 Min Heap)따라서 complete binary tree 임Max Heap일 때 parent node는 child node(subtree)의 key보다 무조건 큼binary search tree가 아님Tree의 Heap은 정렬을 위함이 아닌 Insert와 Delete를 위함Max(Min) Heap의 내용은 Heap 에서 확인 1. Max(Min) Heap을 만든 다음 모든 데이터를 넣음2. (Max Heap이라 할 때) 만든 heap tree에서 root node를 지우고 정렬하고자 하는 list에 지운 root node를 넣음3. (Max Heap이라 할 때) heap tree를 재조정해서 루트를 결정한 다음, 다시 루트를..
-
Sorting (Bubble, Selection, Insertion Sort)공부/자료구조 2018. 9. 30. 13:49
대부분 정렬의 시간복잡도는 O(n·logn)와 O(n²) 사이임특별한 경우 O(n)까지 가능 Internal sorting - main memory 에서 일어나는 정렬External sorting - secondary storage(하드디스크) 에서 일어나는 정렬Bubble Sort이웃되는 값끼리 비교하여 자리를 변경해나가는 방식기본적으로 O(n²). 이미 정렬이 되어 있을 경우는 O(n)예시예시2Selection Sortarray에서 가장 큰 수를 찾은 다음, 찾은 수를 어레이의 맨 끝인 n자리에 놓는다.다음 큰수를 찾은 다음, 어레이의 n-1자리에 넣는다. 이때 찾은 수와 해당 자리에 있는 수의 자리를 바꾼다.O(n²)의 performance가 나옴 bubble sort와 똑같이 O(n²)이지만 bu..
-
트리 탐색 방법 (Tree traversal)공부/자료구조 2018. 9. 28. 13:56
PreorderVisit the root.Visit the left-subtree.Visit the right-subtree.InorderVisit the left-subtree.Visit the root.Visit the right-subtree.PostorderVisit the right-subtree.Visit the left-subtree.Visit the root.Breadth First Search(BFS) or Level order traversalsstarts at the tree root and explores the neighbor nodes first, before moving to the next level neighbors.Depth First Search(DFS)예시
-
Spanning Tree (Prim 알고리즘, Kruskal 알고리즘, Dijkstra 알고리즘)공부/자료구조 2018. 9. 26. 18:34
Spanning TreeN개의 노드들의 connected graph에서 얻을 수 있음depth-first traversal 또는 breadth-first traversal 을 통해 확인N개의 node와 N-1개의 edges로 된 Treecycle은 그래프로부터 제거됨 - 한번 방문한 노드는 다시 방문하지 않기에 cycle이 생길 수 없음한개 이상의 spanning tree는 같은 그래프에서 구할 수 있음추가정보그래프가 connected 일 때, dfs나 bfs는 암묵적으로 그래프 G의 edge를 두개의 집합으로 분리T(for tree edges): edge의 집합으로 사용되거나 search 도중에 방문N(for nontree edges): 남아있는 edge의 집합T의 edge는 G의 모든 vertex들을..
-
Graph공부/자료구조 2018. 9. 26. 15:49
Graph트리는 그래프의 특수한 케이스그래프는 다양한 문제를 모델링 하는 것과 문제를 해결하기 위해 알고리즘을 고안하는데 유용 용어vertex, vertices(vertex의 복수형): 트리의 Node와 동일개념root node와 leaf node가 아닌 모든 노드edge: 트리의 link와 동일개념undirected edge ( = undirected graph)directed edge ( = directed graph)단방향, 양방향in-degree (해당노드로 들어오는 방향성 있는 edge), out-degree (해당노드에서 나가는 방향성 있는 edge)weighted edge ( = (directed or undirected) weighted graph)서울 - 제주도 와 서울 - LA의 wei..
-
AVL Tree공부/자료구조 2018. 8. 17. 23:09
BST에서 위와 같은 Skewed Tree의 경우 복잡도가 O(n)이 나오는 한계점을 해결하기 위해 AVL Tree가 고안됨. AVL 은 해당 자료구조를 만든 사람의 앞글자를 하나씩 따서 만든 것(..)AVL Tree 예시AVL TreeNot AVL Tree용어노드의 height: hbalance factor: bf (왼쪽 서브트리의 height - 오른쪽 서브트리의 hegiht)empty height: -1특징AVL 트리는 BST이면서 동시에 균형을 유지하고 있음모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차이가 1 이하 (왼쪽과 오른쪽 서브트리의 height 계산 결과가 1, 0, -1 이외라면 해당 트리는 AVL 트리가 아님 - 만약 height가 없는 경우는 -1) 즉, 모든 노드들은 balance..
-
Binary Search Tree공부/자료구조 2018. 8. 15. 18:04
Binary Search Tree(BST - 이진검색트리) 는 비어있거나 아래의 속성을 만족하는 binary tree 입니다. 자세하게 Binary Search (이진 검색)과 Linked List를 결합한 자료구조입니다. 이진 검색의 검색능력을 유지하면서 빈번한 값의 삽입, 삭제가 가능하도록 고안되었습니다. 이진검색의 경우 검색에 소요되는 시간복잡도는 O(log₂n)으로 빠르지만 자료 입력, 삭제가 불가능합니다. linked list의 경우 자료 입력, 삭제에 필요한 시간복잡도는 O(1)로 효율적이지만 탐색하는 데에는 O(n)의 복잡도가 발생합니다.정의각각의 모든 node 들의 key는 중복된 값이 아님 (unique)기존의 binary tree는 순서가 없지만 BST는 순서가 존재parent node..