본문 바로가기

분류 전체보기377

[알고리즘] 버블 정렬 (Bubble Sort, 개념과 장단점, 과정, 자바 코드 구현, 시간복잡도, 공간복잡도) 목차 버블 정렬이란? 버블 정렬 과정 버블 정렬 구현 (자바 코드) 시간복잡도 공간복잡도 정렬 알고리즘 비교 1. 버블 정렬이란? 연속하는 두 개의 원소를 오름차순 혹은 내림차순으로 비교하며 교환한다. 정렬되지 않는 값들 중 가장 큰 값(혹은 가장 작은 값)이 끝으로 이동하게 된다. (특징) 최선, 평균, 최악의 시간복잡도는 모두 O(n^2)이다. 직관적이나 거의 사용하지 않는 정렬 알고리즘이다. (장점) 알고리즘이 단순하고, 구현이 쉽다. 배열 내에서 교환하는 방식(제자리 정렬)으로 추가적인 메모리 공간을 필요로 하지 않는다. (단점) 배열의 길이가 길어질수록 지수적으로 시간이 증가하기 때문에 비효율적이다. 하나의 요소가 끝으로 이동하기 위해서 배열의 모든 요소와 교환이 이뤄져야 한다. 2. 버블 정렬.. 2024. 2. 28.
[알고리즘] 삽입 정렬 (Insertion Sort, 개념과 장단점, 과정, 자바 코드 구현, 시간복잡도, 공간복잡도) 목차 삽입 정렬이란? 삽입 정렬 과정 삽입 정렬 구현 (자바 코드) 시간복잡도 공간복잡도 정렬 알고리즘 비교 1. 삽입 정렬이란? 선택한 요소를 이미 정렬된 요소들과 비교해 알맞은 위치에 삽입한다. 선택한 요소의 앞쪽 요소들은 이미 정렬된 상태를 유지하고 있으므로, 매 순서마다 바로 이전 인덱스 요소와 비교하여 원소가 삽입될 올바른 위치를 찾아낸다. (특징) 최선의 시간복잡도는 O(n)이며, 평균 및 최악의 시간복잡도는 O(n^2)이다. O(n^2)의 시간복잡도를 가지는 선택 정렬과 버블 정렬에 비해 상대적으로 속도가 빠르다. (장점) 알고리즘이 단순하고, 구현이 쉽다. 이미 정렬된 배열일 경우, 매번 1번의 비교로 정렬되기 때문에 O(n)의 시간복잡도를 가지며 매우 효율적이다. 배열 내에서 교환하는 방.. 2024. 2. 28.
[알고리즘] 선택 정렬 (Selection Sort, 개념과 장단점, 과정, 자바 코드 구현, 시간복잡도, 공간복잡도) 목차 선택 정렬이란? 선택 정렬 과정 선택 정렬 구현 (자바 코드) 시간복잡도 공간복잡도 정렬 알고리즘 비교 1. 선택 정렬이란? 정렬되지 않은 값들 중에서 최솟값(혹은 최댓값)을 찾고, 정렬되지 않은 값 중 제일 앞에 위치한 값과 교체한다. 정렬되지 않는 값들 중 제일 앞쪽 위치, 즉 해당 순서에 원소를 넣을 위치가 이미 정해져 있다. (특징) 최선, 평균, 최악의 시간복잡도는 모두 O(n^2)이다. 비교 횟수는 많지만, 실제 교환되는 횟수는 적다. 따라서 똑같은 O(n^2)의 시간복잡도를 가지는 버블 정렬보다 적은 시간이 소요된다. (장점) 알고리즘이 단순하고, 구현이 쉽다. 정렬된 배열을 반대로 재정렬할 때 효율이 좋다. 배열 내에서 교환하는 방식(제자리 정렬)으로 추가적인 메모리 공간을 필요로 하.. 2024. 2. 28.
[네트워크] 검색 창에 google.com을 치면 일어나는 일 우선 클라이언트는 요청을 보내기 위해 google.com에 대한 IP 주소를 DNS를 통해 알아냅니다. 전달받은 IP 주소를 패킷에 포함하여 네트워크에서 경로를 찾아가고, 공유기와 같은 마지막 라우터 장비에 도달하면 MAC 주소를 이용해 최종적으로 패킷이 서버에 도달할 수 있습니다. 처음 전달받은 패킷은 google.com에 대한 요청 패킷이 아니라, TCP 연결에 대한 요청 패킷입니다. 따라서 3-way handshaking 과정인 syn 패킷, syn+ack 패킷, ack 패킷을 주고 받습니다. 이로써 클라이언트와 서버의 TCP 연결이 수립이 되었고, 클라이언트는 google.com에 대한 요청 패킷을 보냅니다. 서버는 클라이언트의 요청을 처리한 후에 데이터를 담아 응답함으로써 클라이언트는 사이트에 .. 2024. 2. 19.
[네트워크] DNS란? (도메인과 URL 차이, URL 구성, 도메인 구조와 규칙, DNS 종류, DNS 동작원리, DNS가 분산 데이터베이스 구조를 가지는 이유) 목차 URL이란? URL 구성 DNS란? 도메인 구조와 규칙 DNS 종류 DNS 동작 원리 DNS가 분산 데이터베이스 구조를 가지는 이유 1. URL이란? 검색 창에 google.com을 치는 것과 URL은 다르다. URL은 google.com과 같은 도메인 네임을 포함한 인터넷상에서 자원을 요청하기 위한 규약이다. google.com이라는 도메인 네임은 자원이 어디에 존재하는지 나타내는지를 나타내는 경로이고, 자원을 어떻게 송수신할지에 대한 정보인 프로토콜 등을 포함한 것이 URL이다. 2. URL 구성 Protocol : 자원을 요청해야 하는 프로토콜 Domain name : 자원의 주소 [옵션] Port : 자원에 접근할 수 있는 포트 번호 Path : 자원이 위치하는 경로 Parameters : .. 2024. 2. 19.
[네트워크] TCP와 UDP, TCP 헤더 면접 질문 및 답변 정리 TCP와 UDP에 대해 설명해주세요. 더보기 TCP와 UDP는 OSI 7계층 중 전송 계층에서 사용되는 프로토콜입니다. TCP는 서버와 클라이언트라는 두 엔드포인트 사이에 3-way handshake로 TCP 연결을 이루고, 흐름제어, 혼잡제어, 오류제어를 통해 데이터의 신뢰성을 보장합니다. 이에 반해 UDP는 엔드포인트 간 연결을 이루지 않고, 일방향적인 데이터 전달이 이뤄집니다. 따라서 TCP에 비해 속도가 빠르다는 장점을 가지고 있습니다. TCP와 UDP는 각각 언제 사용하나요? 더보기 우선 UDP는 비연결지향적이기 때문에, 속도가 빠르다는 강점을 가지고 있습니다. 이러한 특징으로 스트리밍과 같은 실시간 서비스에 적합합니다. TCP는 UDP를 사용하지 않는 대부분의 상황에서 사용됩니다. HTTP나 .. 2024. 2. 19.