공부
-
[Design Pattern] 디자인 패턴의 타입공부/디자인 패턴 2020. 2. 22. 22:35
디자인 패턴은 왜 필요할까?중복되는 코드 개발을 하고 싶지 않아서, 업무의 분리를 위해 가 가장 큰 이유가 됩니다. 실 생활에서 이미 바퀴가 발명되어 있는데 이를 재 발명 할 이유는 없습니다. 이전 문제의 해결책과 유사하게 느껴지는 문제에 대해서 해결책을 설계하고자 할 때, 데자뷰와 같은 느낌을 경험했으면 디자인 패턴을 공부하지 않았지만 무의식 적으로 이러한 패턴을 사용했을 것입니다.디자인 패턴의 종류객체 지향 언어의 디자인 패턴은 세 가지로 나눌 수 있습니다.CreationalStructuralBehaviouralCreationalCreational 디자인 패턴은 클래스에서 객체를 구성하는 방법과 관련이 있습니다. 객체를 새로 생성할 때, 인스턴스를 아무렇게 생성하면 코드를 파악하기 어렵게 만들 수 있..
-
[Python] Numpy 배열 형태 변경하기공부/데이터 2020. 2. 19. 21:07
numpy 패키지는 배열의 형태를 손쉽게 변경해 주는 기능을 제공하고 있습니다. 1차원 배열을 2차원으로 바꿀 수 있으며 두 개의 배열을 1차원 또는 다차원 배열로 변형도 할 수 있습니다. 1. 배열의 형태 변경 reshape() 메소드를 사용하여 배열의 크기를 변경할 수 있습니다. import numpy as np np_array = np.arange(1, 10) print(np_array) reshaped = np_array.reshape((3, 3)) print(reshaped) # [1 2 3 4 5 6 7 8 9] # [[1 2 3] # [4 5 6] # [7 8 9]] 배열의 모양을 변경할 때, 베이스가 되는 배열의 크기가 딱 맞아야지만 동작하고 적거나 더 많이 변형하고자 하면 오류가 발생합니..
-
라이브러리, 모듈, 프레임워크 란공부 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..