Study/CS(13)
-
패러다임
[서론] 소프트웨어 아키텍처는 Code로 부터 시작된다. 따라서 아키텍처에 대한 논의도 Code라고 불리는 것들이 최초로 작성된 시점부터 시작되었다. 바이너리 언어부터 어셈블리어, 컴파일러의 등장과 여러 언어의 탄생에 이어 언어에 맞게 여러가지 패러다임이 생성되었다. 그리고 현재는 세 가지의 패러다임만이 존재한다. [개요] 1. 구조적 프로그래밍 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 무분별한 점프가 프로그램 구조에 해롭다는 사실을 제시하고, if/then/else와 do/while/until 같은 익숙한 구조로 대체했다. //goto를 지양한다. 2. 객체 지향 프로그래밍 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. 함수 호출 스택 프레임을 힙..
2022.07.24 -
Tree
정의 그래프의 일종으로, 여러 노드가 한 노드를 가르킬 수 없는 구조이다. (사이클이 없는 그래프) 스택이나 큐와 다르게 비선형의 자료구조이다. 이진 트리 (Binary Tree) 루트 노드를 중심으로 두 개의 서브트리로 나누어지는 트리이다. 나누어진 트리도 두개의 서브트리로 나누어져야한다. 공집합도 이진트리이다. 이진트리에는 완전 이진 트리, 포화 이진 트리, 정 이진 트리가 있다. 완전 이진 트리 (Complete Binary Tree) 위에서 아래로, 왼쪽에서 오른쪽으로 순서대로 채워지는 이진 트리를 완전 이진트리라고 한다. 이진 힙 (Binary Heap)은 완전 이진 트리의 형태를 기반으로 하고 있다. 이진 힙 (Binary Heap) 이진 힙에는 최대 힙과 최소 힙이 존재한다. 최대 힙은 각 ..
2022.02.06 -
정렬 C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
2021.06.01 -
OSI 7계층
네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 1 Layer - 물리 계층 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송한다. 통신 단위는 비트이다 (1,0) 데이터 전달만을 신경쓸뿐, 데이터가 무엇인지 어떤 에러가 있는지는 신경쓰지 않는다. 케이블, 리피터, 허브 2 Layer - 데이터 링크 계층 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다. 통신의 오류를 찾고 재전송도 하는 기능을 한다. 맥 주소를 가지고 통신하게 된다. 전송되는 단위를 프레임이라고 한다. 브리지, 스위치 3 Layer - 네트워크 계층 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅) 경로를 선택하고, 주..
2021.06.01 -
Graph
정점과 간선으로 이루어진 자료구조 (cf. 트리는 사이클이 없는 그래프이다) 정점(V) : 노드라고도 하며, 데이터가 저장된다. 간선(E) : 링크라고도 하며, 노드 간의 관계를 나타낸다. 차수(D) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수 구현 방법 인접 행렬 그래프의 노드를 2차원 배열로 만든 것 노드에 다른 노드들이 인접 정점이라면 1 아니면 0 장점 구현이 편리하다 연결 정보를 조회할 때 O(1)의 시간이 걸린다 단점 정보를 입력할 때 O(n^2)의 시간이 걸린다. 필요이상의 공간이 낭비된다. 인접 리스트 그래프의 노드들을 리스트로 표현한 것 장점 연결 정보를 탐색할 때 O(N(E))의 시간이 걸린다. 공간 낭비가 적다. O(E+V) 단점 연결 정보를 조회할 때 시간이 오래 걸림 구현..
2021.05.30 -
Tree
트리는 스택이나 큐 같은 선형 구조가 아닌 비선형 자료구조이다. 계층적 관계를 표현한다. 삽입 삭제 같은 사고보다는 자료구조 자체로 바라보는 것이 좋다. Binary Tree 자식 노드가 최대 두 개인 노드들로 구성된 트리 층별로 level을 표현하고 최고레벨을 height라 한다. 포화 이진 트리(Perfect Binary Tree) 모든 레벨이 꽉 찬 이진트리 완전 이진 트리(Complete Binary Tree) 왼쪽부터 차례로 채워져 있는 이진트리 이진 힙(Binary Heap) Max Heap 각 노드의 값이 해당 children 보다 크거나 같음 최대값을 찾을 때 O(1) Min Heap 각 노드의 값이 해당 children 보다 작거나 같음 최소값을 찾을 때 O(1) 삽입 삭제? 정 이진 트..
2021.05.30