[알고리즘] 정렬 알고리즘
·
CS
1️⃣ 삽입 정렬✔️ 개념삽입 정렬은 이미 정렬된 부분에 새로운 값을 끼워 넣는 방식으로 정렬한다.✔️ 동작 방식두 번째 요소부터 시작앞쪽 정렬된 배열과 비교알맞은 위치에 삽입✔️ 특징거의 정렬된 배열에서는 매우 빠름안정 정렬(Stable Srot)구현 간단✔️ 시간복잡도평균 / 최악: O(n²)최선: O(n)초기 단계에서 이미 정렬이 되어 있는 배열에서는 선형 탐색으로 O(n)의 시간복잡도를 갖는다.하지만 n개의 모든 값을 n개의 요소와 비교를 해야하는 경우에는 O(n²)의 시간복잡도를 갖게 된다.✔️ Python Codedef insertion_sort(arr): # 두 번째 원소부터 시작 (첫 번째는 이미 정렬된 상태) for index in range(1, len(arr)): ..
[네트워크] 트랜스포트 계층
·
CS
1. 트랜스포트 계층의 역할애플리케이션 계층에서는 데이터를 메시지(message) 단위로 다루지만, 트랜스포트 계층에서는 이를 세그먼트(segment)로 캡슐화한다. 데이터는 계층을 내려가면서 다음과 같은 형태로 바뀐다.메시지→ 세그먼트→ 패킷→ 프레임 즉, 각 계층은 자신의 헤더를 붙이며 데이터를 전달한다.애플리케이션 → 메시지전송 계층 → 세그먼트네트워크 계층 → 패킷링크 계층 → 프레임이 구조를 통해 상위 계층의 데이터는 하위 계층으로 전달되며 점점 구체적인 전송 단위로 변환된다. 2. Multiplexing / Demultiplexing트랜스포트 계층의 핵심 역할 중 하나는 어느 프로세스로 데이터를 전달할지 구분하는 것이다.여기서 Multiplexing과 Demultiplexing이라는 중요한 개..
[네트워크] 애플리케이션 계층
·
CS
1. 애플리케이션 계층 (Application Layer) 애플리케이션 계층은 사용자가 직접 사용하는 서비스와 가장 가까운 계층이다.대표적인 예시는 다음과 같다. 웹 브라우저이메일 서비스메신저파일 전송 서비스애플리케이션은 운영체제 위에서 실행되는 프로세스(process)이며, 네트워크를 통해 서로 메시지를 주고받는다.네트워크에서 중요한 개념 중 하나는 계층화(Layering)이다.계층화의 목적은 각 계층이 자신의 역할에만 집중할 수 있도록 하여,상위 계층이 하위 계층의 세부 동작을 몰라도 통신이 가능하도록 만드는 것이다.예를 들어 브라우저는 데이터를 요청하지만, 실제 패킷이 어떤 경로로 이동하는지는 직접 알 필요가 없다.2. 클라이언트와 서버 구조네트워크 통신은 일반적으로 클라이언트-서버 구조로 이루어진..