본문 바로가기

Computer Science59

[알고리즘] 삽입 정렬 (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.
[네트워크] 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.
[네트워크] 토큰과 토큰 기반 인증이란? (토큰 기반 인증 필요성, 특징과 장단점, 세션과 토큰 인증 방식 차이, JWT 개념과 구조, 엑세스 토큰과 리프레시 토큰) 목차 토큰 기반 인증 필요성 토큰과 토큰 기반 인증이란? 토큰 기반 인증 과정 세션 인증 방식과 토큰 인증 방식 차이 JWT란? JWT 사용 시 주의사항 엑세스 토큰과 리프레 토큰 1. 토큰 기반 인증 필요성 웹에서 쿠키와 세션을 이용해 클라이언트와 서버 사이의 상태 정보를 저장하는데, 상태 정보를 이용하여 동작하는 가장 흔한 기능은 단연코 '인증과 인가'이다. 로그인에 성공한 사용자가 사이트를 이용하기 위해 권한을 부여받은 것을 '인가', 신원을 증명하는 행위를 '인증'라고 한다. 쿠키는 클라이언트에 데이터를 저장하기 때문에, 탈취와 변조에 대한 위험성을 지닌다. 따라서 인증과 인가를 위해 사용하기보다 팝업 창에서 오늘 하루 그만 보기, 장바구니 등과 같은 기능에 사용된다. 세션은 데이터베이스를 이용해.. 2024. 2. 16.
[네트워크] 쿠키와 세션 (쿠키와 세션의 필요성, 쿠키/세션 개념과 동작방식, 쿠키와 세션 차이, 쿠키를 사용하는 이유, 세션을 사용하는 이유, 웹캐시란?) 목차 쿠키와 세션의 필요성 : HTTP Stateless, Connectionless 쿠키 개념과 동작 방식 세션 개념과 동작 방식 쿠키와 세션 차이 쿠키를 사용하는 이유 세션을 사용하는 이유 웹캐시란? 1. 쿠키와 세션의 필요성 : HTTP Stateless, Connectionless HTTP는 웹 상에서 서버와 클라이언트 간 데이터를 송수신하기 위해 사용되는 프로토콜이다. HTTP는 서버와 클라이언트 구조를 띄며, Stateless하고 Connectionless하다는 특징을 가지고 있다. 그중 요청에 대한 응답이 끝나면 연결을 끊어버리는 Connectionless와 서버가 클라이언트의 상태를 저장하고 있지 않다는 Stateless 특성으로 인해, 클라이언트는 서버와 송수신할 때 요청하는 데이터 외에.. 2024. 2. 16.
[네트워크] HTTP Method (GET/POST/PUT/PATCH/DELETE, GET과 POST 차이) 목차 HTTP와 HTTP 메서드 HTTP 메서드 GET POST PUT PATCH DELETE GET과 POST 차이 1. HTTP와 HTTP 메시지 HTTP는 웹 상에서 데이터를 요청하거나 응답하기 위해 사용되는 프로토콜이다. 가장 큰 특징은 클라이언트 - 서버 구조를 띄고 있다는 것이며, OSI 7계층 중 애플리케이션 계층에 속해 80번이나 443번 포트를 이용하고 있다. 클라이언트 - 서버 구조에서 클라이언트는 데이터를 요청하는 쪽이고, 서버는 데이터를 응답하는 쪽이다. 클라이언트는 HTTP Request Message의 바디에 데이터를 담아 요청하고, 서버는 HTTP Request Message의 바디에 데이터를 담아 응답한다. 2. HTTP 메서드 HTTP 메서드는 클라이언트가 데이터를 어떤 방.. 2024. 2. 16.