분류 전체보기 (37) 썸네일형 리스트형 [Kotlin] Reflection에 관하여 & Property에 관하여 Java에서 Class class를 통하여 Reflection을 수행했었다. Java와 완벽 호환되는 언어인 Kotlin은 이에 맞게 KClass를 지원한다. 예시로 KCallable과 KFunction을 살펴보도록 하자. /** * @param R return type of the callable. */ public actual interface KCallable : KAnnotatedElement { public val parameters: List public val returnType: KType @SinceKotlin("1.1") public val typeParameters: List public fun call(vararg args: Any?): R public fun callBy(args:.. Dynamic Programming에 대하여 Dynamic Programming(이하 동적계획법)은 Divide and Conquer(이하 분할정복법)와 같이 문제를 작은 문제들로 나누어 연산을 반복해 최종 해답을 얻는 방식이다. 하지만 분할정복법과 다른 부분은 바로 Memoization을 사용한다는 것이다. 즉, 분할정복법에서는 작게 나눈 문제가 중복될 경우 낭비가 발생하지만 동적계획법은 값을 저장함으로서 중복된 문제를 풀때의 낭비가 없도록 한다. 대표적인 예시로는 피보나치 수열이 있겠다. fun fibo(n): Long { if(n == 1) return 1 else if(n == 2) return 1 else return fibo(n-1) + fibo(n-2) } 아주 대표적인 피보나치 수열의 값을 얻는 함수이다. 위처럼 작성하면 굉장히 간단.. [Android] DataStore 안드로이드 개발자 페이지 DataStore를 참고하였다. 앱 아키텍처: 데이터 영역 - Datastore - Android 개발자 | Android Developers 데이터 영역 라이브러리에 관한 이 앱 아키텍처 가이드를 통해 Preferences DataStore 및 Proto DataStore, 설정 등을 알아보세요. developer.android.com Room 보다는 가볍게 사용할 수 있는 내부 저장소 DataStore를 구성해보려고 한다. 기존에 SharedPreference의 대체재로서 등장한 녀석이다. DataStore는 Preferences DataStore, Proto DataStore 두 가지로 나누어 설명되고 있다. 둘의 차이는 Type Safety의 유무되시겠다. 먼저 Type .. [Android] Expandable TextView Expandable TextView를 만들어보려고 한다. 깃허브에 한 프로젝트를 참고하여 만들었다. GitHub - TheCodeYard/EllipsizedTextView: A simple TextView with a simple task: support custom ellipsis. A simple TextView with a simple task: support custom ellipsis. - TheCodeYard/EllipsizedTextView github.com 기본적으로 TextView에 clickListener를 주어 접거나 피는 행위를 할 예정이다. 그리고 기존 "..." 으로 설정된 ellipsis를 "... more"로 변경하려고 한다. 아주 가벼운 마음으로 시작한 일이었지만 예상 외.. [Android] Custom View를 만들어보자 위와 같이 인스타그램에서 사용하는 모양의 이미지뷰 클래스를 만들어 보려고 한다. 안드로이드에서 제공하는 뷰들을 적절히 조합해서 만들어 보자. 먼저 Layout에 CardView를 배치하고 layout길이의 절반에 해당하는 radius를 주면 원 형태를 만들 수 있다. CardView에 Gradient Color의 xml을 background로 하는 layout을 배치하고 원형 CardView를 배치하고 내부에 ImageView를 scaleType: centerCrop하여 배치해 주면 완성되시겠다. 먼저, View를 상속받은 클래스를 만들면 총 4개의 contructor를 마주치게 된다. View Class를 들어가 주석을 읽어보자. Context만을 파라미터로 하는 constructor는 코드에서 뷰를 .. [Kotlin] Companion Object에 대하여 Kotlin에서 companion object를 살펴보기 위해 간단한 예시 코드를 작성해보았다. class Example { companion object { var test = 1 } } fun main() { val example = Example.test } 위 코드를 자바 코드로 변환해 보면 다음과 같다. public final class Example { private static int test = 1; @NotNull public static final Companion Companion = new Companion((DefaultConstructorMarker)null); public static final class Companion { public final int getTest() {.. [Android] Room with Observable Query Room DB에 관찰가능한 쿼리를 작성해 보려고 한다. 관찰가능한 쿼리란 참조하는 테이블에 변경이 생기면 새 값을 읽을 수 있도록 하는 작업이다. 먼저 Data Layer를 구성해주자. @Database(entities = [Node::class], version = 1) abstract class AppDatabase: RoomDatabase() { abstract fun nodeDao(): NodeDao companion object { private var INSTANCE: AppDatabase? = null fun getInstance(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { Room.databaseBuild.. BackTracking Design Pattern에 대하여 BackTracking이란 Tree search 중에 DFS[depth first search]에서 파생한 디자인 패턴이다. 기본적으로 DFS를 실시하고 탐사 중에 Dead-End에 도달하면, 즉 더 깊은 depth에서 해답을 찾을 수 없다고 판단하게 되면 아직 탐사하지 않은 노드를 자식 노드로 가지고 있는 노드를 찾을 때까지 이전 탐사의 경로를 되짚어 간다. 그리고 이 것을 BackTracking 이라고 한다. 이 알고리즘 디자인 패턴에서 많이 언급되는 것이 N-Queens problem이다. 문제를 보면서 생각해보자. N-Queens problem이란 (N*N) 크기의 체스판에 서로 공격이 불가능한 N개의 퀸을 배치할 수 있는 경우의 수를 구하는 문제이다. 먼저 a8에 퀸을 배치한 상황을 고려해보자... 이전 1 2 3 4 5 다음