본문 바로가기
728x90
반응형

Computer Science16

구간합 배열(Prefix Sum) 구간합 배열이란 만약 N개의 값으로 이루어진 배열이 주어졌을 때, 부분 배열의 합을 구하려면 반복문을 돌리면 O(N)이 걸리지만, 구간합 배열을 사용하면 O(1)에 구할 수 있다. 구간합 배열 설명 Sum 배열은 N 또는 N+1로 이루어진 배열이다. 위의 그림은 N으로 되어있다. P[0]은 A[0]과 같다. 그 다음 P[1]은 P[0] + A[1] P[2]는 P[1] + A[2] P[3]은 P[2] + A[3] 으로 구할 수 있다. 이처럼 반복문을 사용한다면, 하나씩 더해야 할 것을 구간합 배열을 사용하면 O(1)에 구할 수 있다. 만약 A[1] + A[2]를 구하고 싶다면 어떻게 하면 될까? P[2] - P[0] 이 된다. P[2] - P[0] = (A[0] + A[1] + A[2]) - A[0] 이기.. 2023. 7. 5.
이분탐색(Binary Search) 이분탐색이란 이분탐색은 N개의 정렬된 수들 중 어떤 값 K의 위치를 찾아내거나, 없다는 것을 판정하는 탐색을 말한다. 이분탐색은 O(logN)의 시간 복잡도를 가지고 있다. 이분탐색 설명 위의 그림을 보자. N=10인 배열에서 23을 찾으려고 한다. 이때 중간값은 홀수인 경우, 반올림, 반내림하여도 상관없다. 어쨌거나 절반에 가깝기 때문. 1단계 이제 이 중간값이 23보다 크거나, 작은지, 같은지를 검사한다. 여기서는 중간값은 16이기 때문에, 23보다 작고, 왼쪽에는 찾으려는 값이 없다는 것을 확실히 알 수 있다. 그럼 이제 오른쪽을 검사한다. 2단계 오른쪽에서 중간값은 56이다. 23보다 크기 때문에, 오른쪽은 더이상 볼 필요가 없다. 3단계 다음 중간값은 38이다. (혹은 23이 되어서, 바로 값을.. 2023. 7. 5.
HTTPS, SSL, TLS, CA 개념 간단 정리 HTTPS(HyperText Transfer Protocol Secure) HTTP 통신에서 보안을 강화한 보안 프로토콜이라고 할 수 있다. HTTPS는 웹 브라우저와 웹 서버 간의 통신을 암호화하여 보안성을 강화하고 데이터의 기밀성, 무결성, 인증을 보장한다. HTTPS는 기본적으로 HTTP 프로토콜 위에 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 암호화된 연결을 수립하고, 이를 통해 클라이언트와 서버 간의 데이터 전송이 안전하게 이루어지게 된다. HTTPS의 주요 특징 암호화된 연결 HTTPS는 클라이언트와 서버 간의 통신을 암호화하여 제3자가 데이터를 엿볼 수 없도록 보호한다. SSL/TLS 프로토콜을 사용하여 데이터.. 2023. 6. 28.
분할 정복(Divide And Conquer) 분할 정복 분할 정복 알고리즘이란 말 그대로, 1. 분할 2. 정복 순으로 해결하는 것을 말한다. 큰 덩어리의 문제를 분할해서 점점 작은 덩어리로 만들어 간다. 그러다가 충분히 분할되서 풀기 쉬워질 정도가 되면, 그때부터 하나씩 정복해 나간다. 그리고 작은 문제들을 하나씩 합쳐가면서, 큰 문제로 조립해나간다. 그렇게 처음 해결하려고 했던 문제까지 올라가서 결과를 도출한다. 분할 정복은 언제 사용해야 할까? 답은 그냥 풀었을 때보다 분할하고 합치면서 풀었을 경우에 월등히 연산속도가 빠른 경우에 사용한다. 분할 정복 알고리즘 수행시간 계산법 1. 나누어지는 문제의 개수 2. 분할 후 문제의 크기 3. 각 문제마다 병합(정복) 단계에서 걸리는 시간 만약, 병합 정렬을 예로 들면, 1은 2, 2는 N/2, 3은.. 2023. 6. 17.
[비선형구조] 트리(Tree) 트리(Tree) 트리 자료구조란 마치 나무를 뒤집어 놓은 형태와 비슷하다고 해서 붙여진 이름이다. 트리는 그래프의 하위 집합인데, 트리가 되기 위해서는 조건이 필요하다. 트리의 조건 1. 컴포넌트가 하나인 연결 그래프이다. 2. 방향을 무시하였을 때, 싸이클이 존재하지 않는다. 위의 사진을 보면 오른쪽 그래프들은 모두 싸이클이 형성되어있다는 것을 알 수 있다. 즉, 트리가 아니다. 또한 트리가 1, 2 조건을 만족하게 되면 트리의 간선 개수는 트리의 모든 정점 개수보다 1이 작다. 라는 규칙도 발견할 수 있다. 트리의 구조 루트: 가장 상위의 노드. 서브트리: 작은 트리의 집합. 부모: 두 노드가 있을 때, 깊이가 작은 쪽의 노드. 자식: 두 노드가 있을 때, 깊이가 큰 쪽의 노드. 형제자매: 같은 부모.. 2023. 5. 19.
BFS(Breadth-First Search) BFS(Breadth-First Search) 너비 우선 탐색. 이름 그대로 그래프에서 넓은 부분을 우선적으로 탐색하는 알고리즘을 말한다. BFS의 탐색 순서 BFS는 A에서 출발해서 A에서 인접한 노드인 B, C부터 우선적으로 모두 탐색한다. 그 다음 B, C에서 인접한 노드인 D, E, F, G. 그 다음 F, G는 마지막 노드이니, D, E에서 인접한 노드인 H, I, J를 하나씩 탐색하면 모든 노드의 탐색이 끝나게 된다. 이때, 각 단계의 노드들은 그 안에서 방문 순서가 바뀔 수는 있지만, 다른 단계의 노드와는 방문 순서가 바뀔 수 없다. 여기서 가장 처음 시작하는 0단계 노드에서 K단계 노드까지는 최단거리가 K가 된다. 최단거리는 즉, A에서 마지막 노드까지 가는 데 필요한 간선의 최소 개수와 .. 2023. 5. 19.
728x90
반응형