스프링 부트는 왜 사용할까요? spring boot를 사용하는 이유는 쉬운 자동 설정, 의존성 관리, 내부 servlet container 등 다양하게 있습니다. 오늘은 Auto Configuration(자동 설정)과 Easy dependendency Management(의존성 관리)의 동작 매커니즘을 정리해 보겠습니다 1. 의존성 관리 다른 프레임워크를 써보신 분들은 아시겠지만 프로젝트에서 여러 library를 가져올 때 각각의 버전을 명시해주고 또 서로 호환이 되는 지 안되는 지도 찾아봐야하고.. 상당히 귀찮은 작업들을 직접 해줘야 합니다. 하지만 스프링 부트에서는 spring-boot-starter-*에 스프링 부트 버전에 맞는 여러 library들이 사전에 설정되어 있습니다. 모든 library가..
Counting Sort 계수 정렬은 말 그대로 데이터를 counting 하여 정렬되는 것과 마찬가지인 효과를 나타내는 정렬입니다. 앞서 보았던 정렬방식은 시간복잡도 O(N*N) 또는 O(N*logN)을 가졌습니다. 하지만 계수 정렬은 데이터를 한번씩만 접근하여 O(N)의 시간복잡도를 가질 수 있습니다. 어떻게 O(N)의 시간 복잡도를 가질 수 있을까요? 이유는 다른 정렬들은 데이터를 비교하고 위치를 바꾸지만 계수정렬은 데이터를 순차적으로 읽으면서 해당 데이터의 개수를 counting 하여 나중에 한번에 나타내는 방식이기 때문인데요. 이와 같은 이유 때문에 언제나 사용하기보다는 특정한 범위가 있고 중복이 많을 시 정렬이 효과적이라고 볼 수 있습니다. 계수정렬의 작동과정을 보면 다음과 같은 상황에 효과적입..
Quick sort 퀵 소트는 분할정복을 이용한 정렬방식 중 하나로 이름처럼 빠른 정렬입니다. 퀵 소트의 방식은 이렇습니다. 1. 무작위로 기준이 되는 수(pivot)를 고릅니다. 2. 이 때 피벗보다 작은 수를 왼쪽으로 놓습니다. 3. 피벗보다 큰 수를 오른쪽에 놓습니다. 4. 왼쪽과 오른쪽에 놓인 각각의 배열을 다시 1번 과정부터 반복합니다. 다음 아래와 같은 그림으로 보면 이처럼 pivot은 정렬된 것으로 보고 피벗을 기준으로 나머지를 분할하여 다시 피벗을 구해 마지막 피벗하나를 구할때까지 반복하는 구조입니다. 그렇다면 시간 복잡도 어떠할까요? 일반적인 경우의 시간복잡도는 NlogN을 가집니다. 왜냐하면 실제 N개의 수가 있다고 합시다. 만약 피벗이 정말 잘 골라져서 N이 딱 절반씩 계속해서 나눠진..
- Total
- Today
- Yesterday
- AWS
- 가상환경
- 정렬
- 서버
- 알고스팟
- EC2
- 삽입정렬
- spring boot
- 자동화
- 리액트
- RDS
- stack
- 라이프 사이클
- ci/cd
- oauth
- 다익스트라
- 합병정렬
- 버블정렬
- 백준
- 배포
- 선택정렬
- 스프링 부트
- 알고리즘
- greedy
- 병합정렬
- CodeDeploy
- Union-FInd
- 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 |