본문 바로가기
728x90

CS5

[알고리즘 정렬] 자바(JAVA)로 알아보는 퀵 정렬(Quick Sort) 퀵 정렬(Quick Sort) 퀵정렬을 하기 위해 가장 먼저 해야 하는 것: 기준점(pivot) 잡기 기준점(pivot) 값을 정할 때에는 아무 값이나 정해도 되지만 중간 값으로 잡는 게 가장 좋다. 피벗 선택 방식: 첫 번째, 중간, 마지막, 랜덤 등등 (선택 방식에 따라 속도가 달라짐) 다양함 하지만 우리는 배열을 검색해보고 나서 중간값이 어딘지를 정할 수 없기 때문에 그냥 물리적으로 중간에 있는 값을 선택(배열의 길이가 n라고 치면 n/2의 값을 기준점으로 잡음) 아무 곳을 기준점으로 잡고 기준점을 기준으로 기준점보다 작거나 같으면 smaller, 기준점보다 크거나 같으면 bigger(기준점을 smaller에 포함시켜도 되고 bigger에 포함시켜도 된다)로 나눈다. 퀵 정렬의 전제는 작은 쪽(sm.. 2022. 3. 26.
[알고리즘 정렬] 자바(JAVA)로 알아보는 버블 정렬(거품 정렬 Bubble Sort) 버블 정렬(Bubble Sort) 앞에서부터 두 개씩 자기 옆에 있는 값과 비교 → 작은 값은 앞으로 큰 값은 뒤로 바꾸면서 정렬하는 방법 첫 번째 루프 3 5 4 2 1 1. 3과 5를 비교: 작은 값(3)은 앞에, 큰 값(5)은 뒤에 있으니까 통과 3 5 4 2 1 2. 5와 4를 비교: 작은 값(4)은 뒤에, 큰 값(5)은 앞에 있으니까 자리를 바꿔줌 바꾼 결과 3 4 5 2 1 3 4 5 2 1 3. 5와 2를 비교: 작은 값(2)은 뒤에, 큰 값(5)은 앞에 있으니까 자리를 바꿔줌 바꾼 결과 3 4 2 5 1 3 4 2 5 1 4. 5와 1을 비교: 작은 값(1)은 뒤에, 큰 값(5)은 앞에 있으니까 자리를 바꿔줌 바꾼 결과 3 4 2 1 5 5는 정렬 완료 두 번째 루프 3 4 2 1 5 1... 2022. 3. 25.
[네트워크] IP와 TCP/UDP, TCP/IP 정리 IP(인터넷 프로토콜) 클라이언트와 서버 사이에 존재하는 인터넷은 수많은 노드로 이루어져 있는데, 이러한 노드들을 지나 정확하게 서버에 도착할 수 있도록 하는 것이 바로 IP이다. 클라이언트와 서버 각각에 IP주소(100.100.100.1 / 200.200.200.1)를 부여하고 패킷(출발지 IP, 도착지 IP, 전송할 데이터 등이 담겨져 있다) 단위로 데이터를 전달한다. 노드끼리 패킷을 전달하며 서버까지 도착하게 된다. 서버는 패킷이 도착하면 데이터를 받았다는 통신(패킷)을 다시 클라이언트에게 전달해준다. 이때 2번에서 거쳐간 노드와는 다른 경로로 데이터가 전달될 수 있다(인터넷 망은 복잡하므로) 한계 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함 → 서버는 당연히 패킷을 받.. 2022. 3. 20.
[네트워크] OSI 7 계층(OSI 7 Layer) 정리 계층을 분리하는 이유? 각 계층은 독립적인 역할을 할 수 있다. → 역할이 분리되면서 문제 발생 시 문제를 보았을 때 어떤 계층에 문제가 생겼는지 파악 가능 각 계층은 하위계층을 사용하고 현계층의 기능을 포함하여 상위 계층에 제공 최상위 계층만 보면 그 아래계층을 모두 포함 작동 원리 1. OSI 7계층은 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉨. 2. 전송 시 7계층에서 1계층으로 각각의 층마다 인식할 수 있어야 하는 헤더를 붙임(캡슐화) 3. 수신 시 1계층에서 7계층으로 헤더를 떼어냄(디캡슐화) 4. 출발지에서 데이터가 전송될 때 헤더가 추가되는데 2계층에서만 오류제어를 위해 꼬리부분에 추가됨 5. 물리계층에서 1, 0 의 신호가 되어 전송매체 (동축케이블, 광섬유 등).. 2022. 3. 20.
[이코테 2021 강의] 1. 알고리즘 성능평가 (자바 코드 예시) 본 게시글은 나동빈 님의 "이것이 취업을 위한 코딩 테스트다 with 파이썬"의 유투브 강의인 이코테 2021 강의를 듣고 정리한 정리본입니다. (이코테 2021 강의 몰아보기) 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기 해당 영상의 " 알고리즘 성능 평가" 부분만을 정리한 게시글입니다. 복잡도(Complexity) 복잡도는 알고리즘의 성능을 나타내는 척도 시간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석 시간 복잡도가 높다 → 더 많은 수행시간이 소요 시간 복잡도가 낮다 → 해당 알고리즘이 더 빨리 실행 공간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석 공간 복잡도가 높다 → 많은 메모리가 필요하다. 공간 복잡도가 낮다 → 더 적은 메모리가 필요.. 2022. 3. 19.