728x90 전체 글380 [Algorithm] 병합정렬(merger sort) 병합정렬? 병합 정렬의 특징은 빠르다. 구현이 어렵다. 병합 정렬의 flow 1. 분할: 문제를 반으로 나눈다. 2. 정복: 반으로 나눈 문제를 해결한다. 3. 병합: 해결된 문제들을 합친다. 예시 12345678 이 있으면 다음 단계로 나눈다. 1단: 1234 | 5678 2단: 12 | 34 | 56 | 78 3단: 1|2|3|4|5|6|7|8 다시 문제들을 정복해 나가면서 병합한다. 구현 public class MergeSort { MergeSort(){}; public void merge(int []data, int start, int center, int end) { int i = start; // 배열 앞부분 인덱스 int j = center+1; // 배열 중간 인덱스 int k = star.. 2021. 4. 13. [Spring] 스프링 공부 본격적으로 시작 Spring을 어떻게 배울까? 스프링을 어디서 부터 시작해야되지 막막한 사람들이 이글을 보고 잘 배웠으면 좋겠다. 물론 실패한 과정도 있다. 1. 책구매 토비의 스프링 책을 구매했다. 독학하기에 꽤 큰 책이었다. 책을 읽고 공부를 하다보니 의문점이 왔다. 물론 이론부터 배우는것도 좋지만 그래도 한번 스프링이 무엇인지 한번 경험해보는것이 좋겠다 싶었다. 그리고 나서 책을보면서 더 탄탄한 베이스를 만들자 생각을 했다. 사실 아무것도 모르는데 설명해주는 사람 없고 혼자 이해하는게 제일 위험한거다. 잘못된 개념이 자리잡으면 고치기 힘들다 생각했다. 그래서 인강을 찾아봤다. 2. 인강 열심히 인강을 찾아 돌아다니던중 패스트캠프 와 인프런이 눈에 들어왔다. 패스트 캠프 패스트 캠프의 스프링 후기 를 찾아봤지만 좋지.. 2021. 4. 12. [Algorithm] 조합 구현 구현1 nCr #include using namespace std; void combination(int arr[], int n, int r, int index, int target, int comb[]) { cout j & 1) { cout 2021. 4. 11. [Algorithm] 순열과 조합 수학적 개념 경우의 수를 세우는 방법 중 가장 기본이 되는 것은 순열과 조합이다. 가장 기본이 되는 것은 순열이다. 순열 수학에서, 순열 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 개념 1, 2, 3 로 4자리의 수를 만들수 있는 자연수는 몇개 일까? 3! 이다 3! = 3*2*1 = 6 설명 어떻게 6개가 나오는지 아래와 같이 분석해 보았다. 1. 첫번째로 1을 선택하는 경우. 1 2 3 1 3 2 2. 첫번째로 2를 선택하는 경우 2 1 3 2 3 1 3. 세번째로 3을 선택하는 경우 3 1 2 3 2 1 아래 Tree로 표현을 해보았다. 순열공식 만일 3개중 2개를 선택해서 만드는 경우의 수는 3!/2! 이다. 이를 일반화 하면 해당 공식이 나온다. nPr = n!/(n.. 2021. 4. 11. 이전 1 ··· 89 90 91 92 93 94 95 다음 728x90 반응형