๊ณณ๊ฐ์์ ์ธ์ฌ๋๋ค (31) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Kotlin] Calendar extensions ๊ฐ๋จ val Calendar.year: Int get() = this.get(Calendar.YEAR) val Calendar.month: Int get() = this.get(Calendar.MONTH) val Calendar.day: Int get() = this.get(Calendar.DAY_OF_MONTH) val Calendar.dayOfWeek: Int get() = this.get(Calendar.DAY_OF_WEEK) [Kotlin] Selection Sort ์ง์ ํ ์๋ฆฌ์ ํ์ ๋ฒ์(๋น๊ต ๋์)์์ ์ฐพ์ ๋ง๋ ๊ฐ(๊ฐ์ฅ ์๊ฑฐ๋, ๊ฐ์ฅ ํฌ๊ฑฐ๋)์ ์ฐพ์ ๋ฃ๋๋ค. ๊ธฐ๋ณธ swap fun ArrayList.swap(firstIndex: Int, secondIndex: Int) { val temp = this[firstIndex] this[firstIndex] = this[secondIndex] this[secondIndex] = temp } Selection Sort fun ArrayList.selectionSort(showLog: Boolean = true) :ArrayList { if (this.size < 2) { println("๋ฐฐ์ด ํฌ๊ธฐ : ${this.size}. ๋ฐฐ์ด ๊ทธ๋๋ก ๋ฐํ") return this } for (currentPosition in 0 u.. [Android][Kotlin] ์ฌ์ฉ์๊ฐ ์ ํํ ํญ์ ๋ฌธ๊ตฌ์ ๋ณผ๋ ์ฒ๋ฆฌ ๊ธฐ๋ณธ Tab ๋ณผ๋ ์ฒ๋ฆฌ fun TabLayout.Tab.setBold() = this.view.children.find { it is TextView }?.let { tv -> (tv as TextView).post { tv.setTypeface(null, Typeface.BOLD) } } ๋ค๋ฅธ Typeface๋ก ๊ต์ฒด ๊ฐ๋ฅ https://developer.android.com/reference/android/graphics/Typeface#summary Typeface | Android Developers developer.android.com ์ ํ์ง๊ฐ 4๊ฐ์ง ๋ฐ์ ์๊ธฐ๋ ํ๋ค. ์ฌ์ฉ์๊ฐ ์ ํํ ํญ์ ๋ฌธ๊ตฌ ๋ณผ๋ ์ฒ๋ฆฌ fun TabLayout.setSelectedTabBold() = this.addOnTa.. [Kotlin] BaseUseCase abstract class UseCase where Type : Any { abstract suspend operator fun invoke(params: Params): Type? } [Android][Kotlin] ๋ฌธ๊ตฌ ๋ถ๋ถ ์ ๋ณ๊ฒฝ SpannedString ์ข ์ ํญ๋ชฉ ์ ์ธ build.gradle ์ implementation "androidx.core:core-ktx:$core_version" Utility fun String.targetColorSpan( emphasisString: String, @ColorInt colorRes: Int ): SpannedString { if(!this.contains(emphasisString)) return SpannedString(this) val splitStrings = this.split(emphasisString.toRegex()) return buildSpannedString { append(splitStrings[0]) color(colorRes) { append(emphasisString) } appe.. [Kotlin]Bubble Sort ์ธ์ ํ ๋ ๊ฐ์ ์์๋ค์ ๋น๊ตํ๋ฉฐ ์ ๋ ฌํ๋ค. ๊ธฐ๋ณธ swap fun ArrayList.swap(firstIndex: Int, secondIndex: Int) { val temp = this[firstIndex] this[firstIndex] = this[secondIndex] this[secondIndex] = temp } Bubble sort fun ArrayList.bubbleSort(showLog: Boolean = true) : ArrayList { if (this.size < 2) { println("๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2 ๋ฏธ๋ง. ๊ทธ๋๋ก ๋ฐํ.") return this } for (end in lastIndex downTo 1) { var swapped = false for(current in 0 un.. [Android ์ฝ์ง ๊ตํ] ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ๊ธฐ ์ํด ์ปค์คํ InputFilter๋ฅผ ๋ง๋ค์์ด์. ์์ฝ ์๋๋ก์ด๋ ์ ๋ ฅ์ฐฝ์์ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์. ๊ทธ๋์ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ฌ๊ธฐ๊ณ ๊ธ์ ์๋ฅผ ์ธ๊ธฐ ์ํด์๋ ์์ ์ด ํ์ํฉ๋๋ค. ์ ๋ ์ปค์คํ InputFilter๋ฅผ ๋ง๋ค์์ด์. ๊ธฐํ์ ์ ๋ ฅ์ฐฝ์ ๊ธ์์ ์ ํ์ด ์์์ต๋๋ค. ์ผ๋ฐ ๊ธ์, ์ซ์, ๊ธฐํธ, ์ด๋ชจ์ง๋ฅผ ํฌํจํด์ ๊ธ์์ ์ ํ์ด ์์๊ณ , ๋น์ฐํ ์ง๊ด์ ์ผ๋ก ์ด๋ชจ์ง ํ๋๋ ํ ๊ธ์ ์๋๊ฒ ์ต๋๊น. ๋๋ฌด๋ ์ฝ๊ฒ ์๊ฐํ๊ณ ๊ธฐํ๋๋ก ์์ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ, ํ ์คํธ๋ฅผ ํด๋ณด๋ ์ด๋ชจ์ง๋ฅผ ๊ธ์ ํ๋ ์ด์์ผ๋ก ์ธ๋๊ตฐ์.๐ณ ๋๊ฐ ์ ๊ฐ ํ ์คํธํ๋ ์ด๋ชจ์ง๋ค์ ํ ์ด๋ชจ์ง๋น 2๊ธ์ ์ ๋๋ก ์ธ์ํ์ต๋๋ค. iOS์์๋ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ์ํด์ ์ด๊ฒ๊ณผ ๊ด๋ จํด ๋ฌธ์ ๊ฐ ์์ด ์ฝ๊ฒ ๊ฐ๋๋ฐ, ์๋๋ก์ด๋๋ ๊ทธ๋ ์ง ๋ชปํด์ ์์ผ๋ก ํดํด๊ฑฐ๋ฆฌ๊ณ ๐คจ๐คจ์ ๊ทธ๋ฐ์ง,.. ์ด์ 1 2 3 4 ๋ค์