분할 정복을 이용한 정렬 알고리즘 분할 : 배열을 2등분하여 2개의 부분배열로 만든다. 정복 : 각각의 부분배열을 정렬한다. (재귀) 통합 : 정렬된 부분배열을 정렬된 하나의 배열로 합친다. #define N 6 int data[N] = {40, 6, 1, 9, 3, 5}; int temp[N]; int cnt; mergeSort(0, N - 1); void mergeSort(int left, int right) { int mid = (left + right) / 2; if (right == left) return; mergeSort(left, mid); mergeSort(mid + 1, right); merge(left, right); } void merge(int left, int right) { c..
재귀는 직관대로 따라 들어가며 읽는 것이 아니라, 수학적 귀납법을 통해 증명해야 한다. 수학적 귀납법 : 𝑃(1)이 참이고 , 𝑃(𝑛)→𝑃(𝑛+1)이 참이면 𝑃(𝑛)은 모든 자연수 𝑛에 대해서 참이다. 수학적 귀납법에서 필요한 것은 𝑃(𝑛)→𝑃(𝑛+1)이 참임을 보이는 것 뿐이므로 𝑃(𝑛)이 정말로 참일 필요는 없음. 즉, 𝑃(𝑛)은 참이라고 가정하고 𝑃(𝑛+1)를 증명하기만 하면 된다. int sum(int x) { if (x
약 2주간 Professional 양성 교육에 입과 하게 되었다. 예전에도 비슷한 강의를 들었을 텐데 실무를 몇 년 경험하고 들으니까 또 새롭다. 첫째 날 강의 중 인상 깊었던 부분 정리. 1. 카드 문제 사실 : 모든 카드의 한쪽에는 알파벳이, 다른 쪽에는 숫자가 써 있음. 주장 : 만약 한쪽이 D 이면 반대쪽은 3이다. 주장이 사실인지 확인하기 위해 다음 카드들 중 반드시 뒤집어 보아야 하는 것은 몇 개이고 어느 것인가? 2. 맥주집 문제 규칙 : 20세 이하인 사람은 맥주를 마실 수 없음. 나이 혹은 마시고 있는 것을 표시한 다음 4명 중 확인이 필요한 사람은 몇 명이고 누구인가? 3. Hard vs. Soft Logic 동일한 문제인데 1번보다 2번 문제가 훨씬 더 쉬운 이유는 논리가 아닌 직관을..
오랜만에 글을 쓴다. 바쁜 일상 속에서 뒤돌아볼 여유 없이 살다가, 여유있는 금요일 새벽 감성에 휴대폰으로 생각을 끄적여본다. 믿는 가정에서 태어나 교회라는 사회 속에서 자란 내게 예수님을 믿는 것은 당연한 일이었다. 예수님은 없다고 말하며 교회를 나가지 않던 방황의 순간도 있었지만, 그것은 되려 내가 예수님을 온전히 스스로 믿게 되는 터닝포인트가 되었다. 고등학생 시절에는 중고등부 임원을 맡고 기독교 색채가 강한 대학교에 진학하면서 그 캐릭터는 점점 더 짙어져갔다. 그럼에도 불구하고, 내 인생에 가족의 영향력이 절대적이라고 믿고 있었던 나는, '예수님을 믿지 않는 가정에서 태어났다면 과연 나는 그리스도인이 되었을까?'하는 의문에 '그렇지 않을 것이다'라고 답했다. 그러던 중 기독교 관련 교양과목에서 몇..
- Total
- Today
- Yesterday