일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- designPattern
- Functional Programming
- compose
- material3
- F
- Observer Pattern
- 추상팩토리패턴
- 옵저버 패턴
- builderPattern
- Abstract Factory
- ㅋㅁ
- android designsystem
- 프로토타입 패턴
- 팩토리 메소드
- factory method
- 코틀린
- 안드로이드 디자인시스템
- PrototypePattern
- 싱글톤
- 추상 팩토리
- Design Pattern
- r
- 디자인패턴
- Singleton
- 디자인패턴 #
- 함수형프로그래밍
- El
- 빌터패턴
- ㅓ
- Kotlin
- Today
- Total
목록전체 글 (333)
오늘도 더 나은 코드를 작성하였습니까?

일단은 두 개 부분집합으로 쪼갠다. 더 이상 나눠지지 않을 크기만큼 1개 원소만 남을때 까지 다시 병합을 해가면서 정렬한다. 빨간색 선까지 일단 쪼깨고 그리고 합치면서 정렬한다. 합치면서 정렬하는 과정. 재귀적 방법으로 구현. val arr = intArrayOf(10, 1, 5, 3, 2, 4, 7, 9, 8, 6, 5) val sortedArr = IntArray(arr.size) { 0 } fun merge(m: Int, middle: Int, n: Int) { var i = m var j = middle + 1 var k = m // 비교하면서 정렬된 배열에 넣기. while (i
퀵 정렬(quick sort)은 기준키를 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방법이다. 기준키(pivot)은 임의 원소를 잡으면된다. 일반적으로 제일 처음에 있는 원소 또는 가장 중간에 있는 원소를 잡는다. 여기서는 제일 처음에 있는 원소를 잡도록 구현한다. /* 퀵 정렬 기준키(피벗)를 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 한다. 재귀적 방법을 이용하여 구현한다. 평균적인 시간복잡도는 O(N * logN) 최약의 경우 O(N^2) */ val arr = intArrayOf(10, 1, 5, 3, 2, 4, 7, 9, 8, 6) fun..
1. selection sort(선택정렬) /* 선택 정렬. 가장 작은것 선택하여 앞으로 이동 시킨다. 직관적이고, 구현이 쉽다. 비효율적이다. 시간복잡도 O(N^2) */ val arr = intArrayOf(1, 10, 5, 3, 2, 4, 7, 9, 8, 6) fun swap(a: Int, b: Int) { val temp = arr[a] arr[a] = arr[b] arr[b] = temp } fun selectionSort() { for (i in 0 until arr.size) { var selectedIdx = i for (j in i until arr.size) { if (arr[selectedIdx] > arr[j]) { selectedIdx = j } } swap(i, selectedI..

1. 조합(★★★★★) 정의 - 서로 다른 n개의 원소가 모인 집합에서 r개로 이루어진 집합을 뽑는 경우의 수 컴퓨터의 데이터를 다룰때 기본적으로 자료구조(배열, 리스트...등) 데이터를 담아서 조합을 이용한다. 즉, 그래서 index를 선택함으로 구현한다. 완전탐색 문제에서 자주 사용된다. * n C r = n C n-r 구현 r이 3이하인 경우 반복문으로 구현. fun main() { val arr = Array(4){ it } // n = arr.size r = 3 일때 for (i in 0 until arr.size){ for (j in i+1 until arr.size){ for (k in j+1 until arr.size){ println("i:$i j:$j k:$k") } } } } r이 4..