728x90 반응형 Computer Science17 프로세스 메모리 구조(힙, 스택, 데이터, 코드) 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드해야 합니다. 프로그램이 실행되는 동안 CPU가 코드를 처리하기 위해서는 메모리가 명령어와 데이터들을 저장해야 합니다. 메모리 공간프로그램이 운영체제(OS)로부터 할당받는 대표적인 메모리 공간은 코드(code) 영역, 데이터(data) 영역, 힙(heap) 영역, 스택(stack) 영역으로 구성되어 있습니다. 코드(code) 영역코드 영역은 실행할 프로그램의 코드가 저장되는 영역입니다. 텍스트 영역이라고 부르기도 합니다. CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리하게 됩니다. 프로그램이 시작하고 종료될 때까지 메모리에 계속 남아 있습니다. 데이터(data) 영역데이터 영역은 프로그램의 전역 변수와 정적(st.. 2024. 7. 30. 구간합 배열(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. 이전 1 2 3 다음 728x90 반응형