CS 전공 지식
-
동기 vs 비동기CS 전공 지식 2021. 1. 11. 19:29
동기식 (Synchronous) - 동기식은 동시에 일어나는 뜻이다. 요청과 그 결과가 동시에 일어난다는 말! -> 요청한 결과가 한 자리에서 동시에 일어남 -> A노드와 B노드 사이의 트랜잭션을 동시에 맞추겠다는 말임 장점 : 설계가 간단하고 직관적 단점 : 결과를 볼 때까지 아무것도 못하고 대기해야함 비동기식(Asynchronous) - 비동기식은 동시에 일어나지 않는다는 뜻이다. 요청과 결과가 동시에 일어나지 않는다는 말! -> 요청한 그 곳에서 결과가 나타나지 않음 -> 노드 사이의 작업 처리 단위를 동시에 하지 않아도 된다. 장점 : 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업이 가능해 자원의 효율적인 사용이 가능 단점 : 설계가 동기보다 복잡함 pro-self-studier.t..
-
클래스의 상속 사용 판단 기준CS 전공 지식 2021. 1. 3. 22:25
상속 장점 : 중복되는 코드를 제거할 수 있다. 상속 단점 : 상속의 깊이가 깊어지면 유지 보수가 어려워질 수 있다. 1. Single Resposibility ( 단일 책임 ) 너무 여러개의 책임을 한 클래스가 가지면 안된다. 1개의 클래스가 1개의 일만 하도록 하기 위해 상속을 사용한다. 이떄 1개의 클래스는 단일 책임을 갖게 된다. 2. Type Safety ( 타입이 분명해야 할 때 ) 예를 들어 운동선수들 중에 축구, 야구, 농구, 등 여러가지가 있는데 이중 한가지 종목의 운동선수를 뽑고 싶을 때 상속을 사용한다. 3. Shared Base Classes ( 다자녀가 있다! ) 기본동작이 다양하게 구현되어야 하는 경우 예를 들어 학습이라는 기본동작이 있는데 대학교 학과에 따라서 학습의 구현이 다..
-
스택 큐CS 전공 지식 2020. 11. 15. 17:59
가장먼저 들어간 원소가 가장 늦게 나오는 자료구조이다. 스택 오버플로우 : 스택에 원소를 넣다가 스택이 꽉 차서 스택에 원소를 더 이상 넣을 수 없는 상태를 의미한다. 스택 언더플로우 : 스택에서 원소를 빼다가 스택에 원소가 없는 상태에서 원소를 뺴려고 하면 스택 언더플로우가 발생하였다고 한다. 특정 자료구조가 뭔지 아는 것은 중요하지 않다. 중요한 것은 자료구조를 내 의도에 맞게 자유자제로 사용할 줄 아는 능력이다. -> 문제를 많이 풀어서 자료구조 활용 능력을 숙달시켜야 한다.
-
이진 탐색CS 전공 지식 2020. 11. 11. 16:37
n개의 정렬된 원소들에서 특정 원소를 탐색하는 방법이다. n개의 원소들의 n/2번째 인덱스에 해당하는 원소와 탐색을 원하는 원소의 크기를 비교하여 크기가 작다면 0부터 (n/2)-1까지의 인덱스에서만 탐색하면 된다. 시간복잡도 탐색시간이 최대로 오래 걸릴 경우의 시간 복잡도는 (n)/(2^k)=1 일때의 k이므로 logn/log2==>logn이다. 효율성 정렬을 해야하므로 시간 복잡도가 nlogn이라고 생각할 수 있는데 매우 많이 찾아야할 때 한번 정렬을 하고 탐색하는 것이 그냥 무작정 처음부터 끝까지 찾는 것[O(n)]보다 효율적이다. 1000개의 원소를 10만번 탐색해야할 때 시간 효율성은 이진탐색 : 1000*(log1000)*(log1000)^10만
-
재귀함수CS 전공 지식 2020. 11. 11. 14:57
수학적 귀납법 : 명제 P(n)이 모든 자연수 n에서 성립하는 것을 보이는 방법이다. 증명순서 1) P(1)이 참임을 보인다. 2) P(k)가 성립한다고 가정한 후 P(k+1)이 성립함을 보인다. 3) 2)번까지 보였으면 모든 자연수 n에 대하여 P(n)이 성립한다. 어떤 명제 A가 k=1일때 성립하고 k=n일때 성립한다고 가정했을때 k=n+1일때 성립한다면 귀납적 방법에 의해 명제 A는 모든 자연수에서 성립한다. 재귀함수 디자인을 위한 3가지 절차 1. 함수의 역할을 말로 정확하게 정의한다. 2. 기저조건(Base Condition)에서 함수가 제대로 동작함을 보인다. 3. 함수가 작은 input에 대하여 제대로 동작한다고 가정하고 함수를 완성한다. 4. 함수를 완성한 후 기저조건으로 수렴함을 보인다...
-
합병 정렬CS 전공 지식 2020. 11. 11. 13:32
n개의 원소가 존재 할때 원소들을 절반으로 배열1 , 배열2로 나누어 각각 정렬한 후 배열1과 배열2의 원소들을 각각 비교하여 정렬하면서 배열1과 배열2를 합친다. 이때 배열1과 배열2를 정렬하는 과정은 재귀함수 2개로 구현하고 정렬된 배열1과 배열2를 합치는 과정을 merging이라는 함수로 구현한다. 배열의 원소의 개수가 1이 될 때가 기저 조건이다. 기저 조건일때는 merging을 수행하지 않고 return한다. (merging 함수를 구현할때는 인수를 4개를 받는데 배열1과 배열2의 첫 번째 인덱스와 마지막 인덱스를 입력받는다.) 시간 복잡도 합병정렬의 시간복잡도는 재귀함수를 고려하여 계산한다. T(n) = 왼쪽 정렬 시간복잡도 + 오른쪽 정렬 시간복잡도 + 정렬된 왼쪽 배열과 정렬된 오른쪽 배열..
-
퀵 정렬CS 전공 지식 2020. 11. 11. 12:39
퀵 정렬 개념 n개의 정렬할 원소가 있다고 할때 피봇을 하나 정하여 n-1개의 원소를 피봇보다 작은 원소는 왼쪽으로 피봇보다 큰 원소는 오른쪽으로 옮긴다. 그러면 피봇 원소의 위치는 정렬이 모두 되었을때의 피봇 원소의 위치와 같아진다. 피봇의 원소를 기준으로 왼쪽 원소들과 오른쪽 원소들을 완전히 나누었으므로 왼쪽 원소들로만 재귀함수를 이용하여 퀵정렬을 하고 오른쪽 원소들로만 재귀 함수를 이용하여 퀵정렬을 한다. 만약 왼쪽이나 오른쪽의 원소의 수가 1보다 작거나 같다면 기저조건이므로 해당 퀵정렬을 종료한다. 퀵 정렬의 시간 복잡도 n개의 원소들 중에서 피봇을 기준으로 왼쪽과 오른쪽으로 n-1개의 원소들을 분류하는 시간복잡도는 O(n)이다. 대략적인 시간 복잡도를 계산하기 위하여 만약 피봇이 원소를 정확하게..