๊ณณ๊ฐ์์ ์ธ์ฌ๋๋ค/์คํฐ๋ (6) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [๋ฉด์ ] ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ์์ด ๋ฉด์ ์ ์์ฃผ ์ฐ์ผ ์ ์๋ ์๋จ์ด ์ถ์ฒChatGPT๋๊ธฐ์ ๊ด๋ จ ์ฉ์ดLifecycle - ์ฑ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ์กํฐ๋นํฐ/ํ๋๊ทธ๋จผํธ ์๋ช ์ฃผ๊ธฐ ๊ด๋ จ ์ง๋ฌธ์์ ์ฌ์ฉ"Understanding the lifecycle of activities and fragments is essential for managing Android app resources effectively."Architecture - ์ฑ์ ๊ตฌ์กฐ๋ ํจํด์ ์ค๋ช ํ ๋ (์: MVVM, MVI)"Our team implemented Clean Architecture to make the codebase modular and easily testable."Clean Architecture follows SOLID principles, which reduce coupling, im.. [Kotlin] ์ต๋๊ณต์ฝ์ & ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๊ธฐ ์ต๋๊ณต์ฝ์ GCD(Greatest Common Divisor) ์ ํด๋ฆฌ๋ํธ์ ๋ฒ ์ด์ฉ fun gcd(num1: Int, num2: Int): Int { return if (num2 == 0) num1 else gcd(num2, num1 % num2) } ์ต์๊ณต๋ฐฐ์ LCM(Least Common Multiple) ์ต์๊ณต๋ฐฐ์ = ๋ ์์ฐ์์ ๊ณฑ / ์ต๋๊ณต์ฝ์ fun lcm(num1: Int, num2: Int): Int { return num1 * num2 / gcd(num1, num2) } [Kotlin][Java] ByteArrays๋ฅผ 16์ง์(Hex) String์ผ๋ก ๋ณํ https://www.baeldung.com/kotlin/byte-arrays-to-hex-strings ์ฌ๊ธฐ์ ์ ๋ง ์ ๋์์. ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค. ๊ทธ ์ค์์ ๋ค์์ ๋ฐฉ๋ฒ์ ์ฃผ๋ชฉํ๋ค. https://www.baeldung.com/kotlin/byte-arrays-to-hex-strings val hexChars = "0123456789abcdef".toCharArray() fun ByteArray.toHex4(): String { val hex = CharArray(2 * this.size) this.forEachIndexed { i, byte -> val unsigned = 0xff and byte.toInt() hex[2 * i] = hexChars[unsigned / 16] hex[2 * i.. [์๋ฃ๊ตฌ์กฐ] ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋ ๊ตฌ์ฑ : ๋ฐ์ดํฐ + link(๋ค์ ๋ ธ๋์ ๋ํ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ. ํฌ์ธํฐ ํน์ ๋ ํผ๋ฐ์ค) ์ฒซ ๋ฒ ์งธ ๋ ธ๋ : ํค๋ header ๋ง์ง๋ง ๋ ธ๋ : ๊ผฌ๋ฆฌ tail. link๋ ๋น์๋๊ฑฐ๋ null๋ก ์ง์ ํจ ๋ ธ๋์ link๋ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํธ๋ ๋ ํผ๋ฐ์ค๋ก๋ง ๊ตฌ์ฑ๋จ. ๊ทธ๋์ ์์ผ๋ก๋ง ์ข ์ฃผ ๊ฐ๋ฅ ๋ฆฌ์คํธ๋ฅผ ์์ ์ข ์ฃผํ๋ ค๋ฉด ํญ์ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์ํด์ผ ํ๋ค. ๋ฆฌ์คํธ์ ์๋ ๋ชจ๋ ์์์ ์์น๋ฅผ ํ์ ํ๋ ค๋ฉด ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์์ ๋ํ ํฌ์ธํฐ๋ ๋ ํผ๋ฐ์ค๊ฐ ์์ด์ผ ํ๋ค. ์ฒซ ๋ฒ์ฌ ์์์ ํฌ์ธํฐ๋ ๋ ํผ๋ฐ์ค๋ ๋ณดํต ๋ณ๋์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํจ. ๋ ธ๋. ์ฝํ๋ฆฐ์ผ๋ก ์์ฑ class SinglyLinkedListElement(val value: T, var next: SinglyLinkedListElemen.. [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.. [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.. ์ด์ 1 ๋ค์