개념요소들 중에서 최대/최소값을 찾아 정렬하는 알고리즘입니다.최대값 선택 시 내림차순 정렬을 진행합니다.(최솟값 선택 시 오름차순 정렬) 로직오름차순 정렬을 기준으로 보자면먼저 0~N-1 요소들 중에서 가장 작은 값을 찾고 0번째 인덱스와 교환해줍니다.그다음 정렬된 0번째를 제외한1~N-1 요소 중에서 가장 작은 값을 찾고 1번째 인덱스와 교환해줍니다.이렇게 총 N-2번(마지막 인덱스 탐색 X) 반복하면 정렬이 완료됩니다.추가 메모리 공간이 필요하지 않는 특징이 있습니다. 코드자바로 작성한 선택정렬 코드는 다음과 같습니다.// 선택 정렬: N^2 순회// 오름차순 정렬for (int i = 0; i arr[j]){ minVal = arr[j]; minIdx = j..
개념정렬을 진행할 원소의 index(a)보다 작은 곳(0~a-1)에 있는 원소들을 탐색하고알맞은 위치에 삽입하여 정렬하는 알고리즘입니다.구현이 간단하다는 특징이 있습니다. 로직오름차순 정렬 기준1~N-1번째 인덱스를 순차적으로 key로 두고key-1 ~ 0의 인덱스를 감소순회하면서만약 arr[현재의 값] > key 라면, arr[현재의 값+1] = arr[현재의 값]을 넣어줍니다.그렇지 않다면, 순회를 종료합니다.순회가 끝나고 난 후, arr[마지막 위치 + 1] = key 값으로 갱신합니다. 코드자바로 작성한 삽입정렬 코드는 다음과 같습니다.// 삽입 정렬: N^2 순회int key, j;for (int i = 1; i = 0 ; j --) { if (arr[j] > key) arr[j+1..
개념서로 인접해 있는 요소 간 대소 비교를 통해 정렬하는 알고리즘입니다. 추가적인 메모리 공간이 필요하지 않다는 특징이 있으며 쉽게 구현할 수 있지만 비효율적인 알고리즘입니다. 인접한 원소를 교환하는 모습이 마치 물 속의 거품과 비슷하다고하여 버블 정렬이라고 부른다고 합니다. 로직예시로 오름차순 정렬을 만든다면arr = [1, 7, 2, 4, 5, 6] N-1개의 요소를 순회하며(0 ~ N-2 인덱스)현재 인덱스에 위치한 값이(a) 다음 인덱스에 위치한 값(b) 보다 클 경우 교환해줍니다.이렇게 첫번째 순회를 마치게 되면 결과는다음과 같이 수열 중 가장 큰 수인 7이 맨 오른쪽으로 정렬된 것을 볼 수 있습니다.arr = [1, 2, 4, 5, 6, 7] 해당 예시는 한 번의 정렬만으로 오름차순 정렬이 ..
정렬 알고리즘 종류요소들을 특정 순서대로 재배치하는 것을 정렬이라고 하며 이런 정렬을 하는 알고리즘의 종류에는 대표적으로 버블, 삽입, 선택, 퀵, 병합, 힙 정렬이 있습니다. 알고리즘 별 시간 복잡도를 먼저 말씀드리자면 다음과 같습니다. 버블, 삽입, 선택: O(N^2)퀵, 병합, 힙: O(N logN) 버블 정렬서로 인접해 있는 요소 간 대소 비교를 통해 정렬하는 알고리즘입니다.추가적인 메모리 공간이 필요하지 않다는 특징이 있으며쉽게 구현할 수 있지만 비효율적인 알고리즘입니다. 인접한 원소를 교환하는 모습이 마치물 속의 거품과 비슷하다고하여 버블 정렬이라고 부른다고 합니다. 시간 복잡도: O(N^2) 버블 정렬에 로직에 대한 자세한 설명 및 코드는 아래의 링크에 있습니다. 버블 정렬(Bubble So..
최소 스패닝 트리 개념그래프 내의 모든 정점을 포함하는 트리를 스패닝 트리라고 하는데이러한 스패닝 트리 중에서 사용된 간선들의 가중치 합이 최소인 트리를 최소 스패닝 트리라고 합니다. 특징1. 간선의 가중치 합이 최소2. n개의 정점을 가지는 그래프에 대해 반드시 n-1개의 간선만을 사용해야 함3. 사이클이 없어야 함 최소 스패닝 트리 관련 알고리즘최소 스패닝 트리르 구하는 알고리즘에는 대표적으로 크루스칼과 프림이 있습니다. 크루스칼그리디하게 모든 정점들을 최소 비용으로 연결해서 구하는 간선 선택 기반의 크루스칼 알고리즘은가중치 값을 기준으로 오름차순 정렬하고 유니온파인드를 사용해서 사이클을 확인하는 것이 핵심입니다.시간 복잡도는 O(ElogE) 입니다. 다음은 크루스칼 알고리즘을 자바로 구현한 코드입니..
TCP/IP 4계층 모델링크 - 인터넷 - 전송 - 애플리케이션 계층OSI 7계층(물리 - 데이터링크 - 네트워크 - 전송 - 세션 - 표현 - 애플리케이션) 각각의 계층은 독립적으로 설계되었음(특정 계층이 변경되어도 영향을 받지 않음)예) TCP를 UDP로 변경했다고 해서 다시 브라우저를 설치하지 않아도 됨 애플리케이션 계층사용자와 직접 맞닿는 응용프로그램이 사용되는 계층HTTP(웹 데이터 통신)/ FTP(장치간 파일전송) / SMTP(전자메일전송) / SSH(보안) / DNS(도메인네임 to IP)가 있음 DNS도메인네임을 IP주소로 매핑해주는 서버1. www.naver.com에 DNS 쿼리가 오면(사용자가 검색하면)2. .com DNS를 찾고 .naver를 찾고 .www DNS를 찾으며 완벽한 ..
SSR(Server Side Rendering) 장점 SEO(Search Engine Optimization)를 하기 위해서 검색엔진 봇들은 HTML에서 데이터를 크롤링(수집) 하는데, CSR방식의 경우 클라이언트가 페이지를 구성하기 전까지는 HTML에 아무 데이터가 없음. 반면 SSR 방식은 서버 측에서 그려주는 방식이기 때문에 HTML 안에 컨텐츠가 포함된 상태 → 검색 엔진 최적화에 중요한 역할 요청하는 화면의 내용을 매 요청시 마다 받아오기 때문에 첫 로딩 속도가 빠름 리액트 라우터 사용 간략화 단점 유저와 상호작용에 따라 뷰가 변경될 때마다 서버와 응답하기 때문에, 서버에 부담이 가고 새로고침 때문에 UX측면에서도 불편함이 느껴질 수 있음 예시 Next.js React를 기반으로 한 framew..