알고리즘 4

[CS-네트워크] TCPvsUDP란? + 네트워크 기본 개념

네트워크 기본 개념1. 네트워크 목적 : 네트워크는 여러 장치들이 서로 연결되어 데이터를 주고받는 시스템이다.이를 통해 파일 공유, 인터넷 접속, 이메일 등 다양한 작업을 진행한다.2. 네트워크 장비Server : 서비스 제공 장치. 웹사이트 호스팅, 파일 저장, 데이터베이스 관리 등 담당Client : 서버에서 제공하는 서비스를 요청하는 장치. ex) 웹브라우저 통해 웹사이트에 접근하는 컴퓨터가 클라이언트Switch : 네트워크에서 데이터를 수신하고 목적지에 맞게 전달. 패킷을 수신 후 MAC 주소를 기반으로 적절 포트로 전송Router : 서로 다른 네트워크를 연결하고 패킷을 올바른 경로로 전달. ex) 집안의 인터넷 라우터는 LAN과 인터넷 WAN을 연결한다.Hub : 네트워크의 모든 장치에 데이터..

[CS-알고리즘] 병합 정렬에 대해서

병합 정렬이란?- 안정 정렬에 속하는 분할 정복 알고리즘의 하나.- 하나의 리스트를 두 개의 균등한 크기로 분할하고 부분 리스트를 정렬한 후 두 개의 정렬 리스트를 합하여 전체 정렬된 리스트가 되도록 하는 방법- 평균 및 최악의 경우에 O(n log n) 시간 복잡도를 가지며 공간 복잡도는 추가 배열을 위해 O(n)이다.병합 정렬의 과정Divide(분할) : 정렬할 배열을 두 개의 하위 배열로 나누고 나눌 수 없을 때까지 반복 (1개 또는 0개 요소를 가질 때까지)Cinquer(정복) : 각 하위 배열이 정렬될 상태로 만들어질 때까지병합 Combine(결합) : 두 개의 정렬된 하위 배열을 하나로병합 Java 예제import java.util.Arrays;public class Main { public ..

[CS-알고리즘] 삽입 정렬에 대해서

삽입 정렬(Insert Sort)삽입 정렬은 비교적 간단하고 직관적인 정렬 알고리즘이다.카드 정리와 비슷한 방식으로 작동하며 배열의 각 요소를 적절한 위치에 삽입하여 정렬을 완성한다.시간 복잡도는 이미 정렬된 경우 O(n), 평균 및 최악은 O(n²)간단하고 이해하기 쉬우나 큰 데이터셋에서는 성능이 좋지 않다.정렬된 부분 : 배열의 왼쪽부터 현재까지 정렬이 완료된 부분정렬되지 않은 부분 : 배열의 오른쪽 나머지 부분, 정렬 필요순서배열의 첫 요소는 이미 정렬된 것으로 간주두 번째 요소부터 각 요소를 정렬된 부분에 적절 위치 삽입이를 반복 예제public class InsertionSort { public static void insertionSort(int[] arr) { // 배열의 ..

[CS 알고리즘] 거품 정렬에 대해서

거품 정렬가장 간단한 정렬 알고리즘 중 하나 인접한 두 요소를 비교하여 순서가 잘못된 경우 교환하는 방식으로 정렬한다.가장 큰 요소가 점차 오른쪽 끝으로 이동하는 방식이 거품이 올라오는 모습과 비슷하다고 하여 거품 정렬이 되었다.동작 방식리스트의 처음부터 시작해서 인접한 두 요소를 비교만약 앞의 요소가 뒤의 요소보다 크다면 두 요소를 교환위의 과정을 리스트 전체가 정렬될 때까지 반복시간 복잡도최악의 경우: O(n²)최선의 경우: O(n) (이미 정렬된 경우)평균 경우: O(n²) 거품 정렬은 단순하고 구현하기 쉽지만, 성능이 좋지 않아 일반적으로 실무에서는 잘 사용되지 않는다. 대신 퀵 정렬, 병합 정렬 등의 더 효율적인 정렬 알고리즘이 사용됨..Java 예시바깥 for문 : i가 배열길이까지내부 for..