셸 정렬 기본 개념 "Donal L. Shell"이라는 사람이 제안한 방법으로, 삽입 정렬을 보안한 알고리즘이다. 삽입 정렬이 어느 정도 정렬된 배열에 대해서는 빠르다는 것을 착안하였다. 삽입 정렬과 다르게 셸 정렬은 전체의 리스트를 한 번에 정렬하지 않는다. 셸 정렬 구체적인 개념 정렬해야 할 리스트의 각 k번째 요소를 추출해서 부분 리스트를 만든다. 이때 k를 "간격(gap)"이라고 한다. 각 회전마다 간격 k를 절반으로 줄인다. 즉, 각 회전이 반복될 때마다 하나의 부분 리스트에 속한 값들의 개수는 증가한다. 간격의 초기값 : 정렬할 리스트 사이즈 / 2 분할된 리스트의 개수는 gap과 같다. 간격은 홀수로 하는 것이 좋다. 간격을 절반으로 줄일 때 짝수가 나오면 +1을 해서 홀수를 만든다. 간격 ..
일단 블록 그리고 체인으로 나눠서 생각해보자. 물리적인 블록은 네모 모양의 블록 안에 무엇이든 넣을 수 있다. 비트코인의 경우 transation 거래를 넣는다. 이런한 블록을 체인으로 연결할 수 있다. 블록체인의 장점은 블록을 변경할 수 없다는 것이다. 블록체인 안에는 지문(fingerprint) 같은 것이 있어서이다. 블록이 탄생하게 되면 지문이 생기고 이 지문은 항상 자신의 블록 전에 있는 지문을 참고해서 생성된다. 이 말은 즉 블록의 지문은(이전 블록 지문 + 현재 블록 지문)으로 구성된다는 뜻이다. 블록의 내용을 바꾸고 싶다면, 블록의 지문을 변경해야 한다. 하나를 변경하면, 나머지를 다 변경해야 한다. 이런 이유로 블록체인 기술이 안전하다고 한다. 블록체인은 또한 데이터베이스이다. 블록에 정보..
Back end는 두뇌이다. Back end는 24시간 항상 켜져 있고, 요청을 수행하기 위해서 항상 대기한다. Back end는 다양한 프로그래밍 언어로 프로그래밍된다. Back end 요소 서버 - 디스크, 메모리, 네트워크로 구성되며, 많은 정보와 트래픽을 처리해야 하기 때문에 서버가 크다. 서버는 리눅스, 윈도우 서버로 나눠지며 리눅스를 가장 많이 사용한다. 무료이며 오픈소스이기 때문이다. 어플리케이션 - 다양한 프로그래밍 언어로 작성되어 있으며 항상 작동할 수 있게 대기하고 있다. 데이터베이스 - 데이터베이스에 어플리케이션이 정보를 조회하고 저장한다. 대부분의 데이터베이스 SQL를 통해 대화한다. (MongoDB, graph database은 SQL이 필요하지 않다.)
몇 해 전부터 바닐라 JS가 인기 단어로 많이 언급되었다. 이것은 오늘날 가장 중요한 프로그래밍 언어 중 하나라고 말할 수 있다. 우리는 네이티브 모바일 어플리케이션에서 서버의 복잡한 어플리케이션까지 거의 모든 것을 개발할 수 있다. 또한 구글, 페이스북과 같은 유명한 회사들이 개발하고 관리하는 라이브러리와 프레임워크가 20개가 넘는다. 여기서 프레임워크는 특정 유형의 문제에 초점을 맞추고 유사한 특성 문제를 해결하기 위한 표준화된 개념 및 기준이다. 또한 라이브러리는 기능에 대해 잘 정의된 인터페이스를 제공하는 일련의 기능 구현이다. 다시 말하면, 프레임 워크는 특정 문제를 해결하기 위한 일련의 도구, 라이브러리는 기능 구현의 집합이라고 할 수 있다. 예를 들어 Angular 프레임워크는 SPA기반의 ..
이번 문제는 알고리즘 적으로 접근해도 되지만 간단한 날짜, 요일 시간 표출에 대한 것은 잘 만들어진 API를 쓰는 게 더 효율적이라 생각된다. import java.time.LocalDate; class Solution { public String solution(int a, int b) { LocalDate localDate = LocalDate.of(2016, a, b); return localDate.getDayOfWeek().toString().substring(0,3); } }
완주하지 못한 선수를 찾는 문제는 입출력 예를 보면 간단히 구현 가능하다. 완주하지 못한 사람은 1명뿐이고 partitiparticipant 배열에서 completion를 제외하면 쉽게 답이 나오지만, 미리 정렬을 해야 하는 함정이 있다. 정렬이 선행되지 않고 2중 for문으로만 해결하려다 보면 테스트는 통과되지만 효율성(성능) 채점에서 실패가 발생한다. import java.util.Arrays; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; int pLength = participant.length; int cLength = completion.length; /..
요즘은 MSA 아키텍처를 많이 지향하고 있는 추세이다. 이런 트렌드에 맞춰 배포 전략도 다양하게 개발되고 발전하여 변화하고 있다. 1. 롤링(Rolling) 일반적인 배포를 의미하며, 단순하게 서버를 구성하여 배포하는 전략이다. 다시 말해 구 버전에서 신 버전으로 트래픽을 점진적으로 전환하는 배포이다. 관리가 편하지만, 배포 중 한쪽 인스턴스의 수가 감소되므로 서버 처리 용량을 미리 고려해야 한다. 2. 블루 그린(Blue Green) 구 버전을 블루, 신 버전을 그린 이라고 해서 붙여진 이름이다. 신 버전을 배포하고 일제히 전환하여 모든 연결을 신 버전을 바라보게 하는 전략이다. 구 버전, 신 버전 서버를 동시에 나란히 구성하여 배포 시점에 트래픽이 일제히 전환된다. 빠른 롤백이 가능하고, 운영환경에 ..
선택 정렬 기본 개념 제자리 정렬(in-place sorting) 알고리즘의 하나로, 입력 배열 이외에 다른 추가 메모리를 요구하지 않는 정렬 방법이다. 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다. 선택 정렬 구체적인 개념 선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세번째 자료부터 마지막 자료까지 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬을 수행한다. 1회전을 수행하고 나면 가장 작은 값의 자료가 맨 앞에 오게 되므로 그 다음 회차에서는 두 번째 자료를 가지고 비교한다. 선택 정렬 알고리즘 예제 import java...
삽입 정렬 기본 개념 손 안의 카드를 정렬하는 방법과 유사하다. 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분의 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘 매 순서마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 넣는다. 삽입 정렬 구체적인 개념 삽입 정렬은 두 번째 자료부터 시작하여 그 앞의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘이다. 2|1, 3|2, 4|3 번째 자료와 비교한 후 삽입할 위치를 찾았다면 그 위치에 자료를 삽입하기 위해 자료를 한 칸씩 뒤로 이동시킨다. 처음 Key 자료는 두 번째 자료부터 시작한다. 삽입 정렬 알고리즘 예제 import java.util.Ar..
- Collection
- Maven
- Eclipse
- 프로그래머스
- 프로그래머
- 오라클 내장 함수
- 개발환경
- javascript
- 자바
- Java
- 리눅스 명령어
- 리액트 16
- 오라클
- sort algorithm
- 소프트웨어공학
- 회고
- effective java
- 리액트
- Tomcat
- 자바스크립트
- 성능분석
- SQL
- Linux 명령어
- 경력관리
- 제주도 여행
- 제주도 3박4일 일정
- 이직
- spring
- 정렬 알고리즘
- React
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |