Kotlin
-
[Android/Kotlin] 코틀린과 코루틴IT Study/Android 2024. 5. 19. 15:08
코루틴의 개념을 정확하게 이해하고 활용하기 위해, 이를 주제로 글을 작성해보려고 합니다 :) 🍇 목차1. Coroutine2. Thread와 Coroutine3. 그래서 Coroutine이 뭔데?4. 코루틴의 구성요소4-1. Coroutine Context4-2. Coroutine Builder4-2-1. launch (main thread unblocking)4-2-2. runBlocking (main thread blocking)4-2-3. async (main thread unblocking)4-3. Coroutine Scope5. 주요 함수 1. Coroutine우리는 작성된 순서대로 실행되는, 동기적인 실행 방식을 채택해왔다.그러나 여러 루틴을 동시 실행하기 위해 비동기 처리를 지원하는 코루틴..
-
[개인 프로젝트] 내가 사용하기 위한 앱 만들기 (Feat. 집중을 위한 앱)Daily/Project 2024. 5. 12. 16:45
나에게 필요한, 내가 사용하기 위한 앱을 만들어보자.나는 다시 개인 프로젝트를 시작하려고 한다. 이번 프로젝트는 나 자신을 위한 앱을 만드는 것이 목표이다. 지금 나에게 필요한 것은 무엇일까?나는 약 3개월 전 안드로이드 개발자로 일을 시작했다. 그러나 나는 일반적인 안드로이드 앱을 개발하는 것이 아니라, 안드로이드 에이전트(라이브러리, SDK)를 개발하는 일을 하게 되었다.새로운 분야에서의 시작은 어려움이 많았다. 그러나 나는 빠르고 확실하게 적응하기 위해 노력을 했고, 난 지난 3개월 동안 회사 업무(코드)에 집중하며 열심히 일했다.이런 과정에서 난 많은 것을 배우고 성장했다. 하지만, 나는 계속해서 공부하고 성장하고자 하는 욕망을 느꼈다. 그러나 지난 3개월 동안 나는 나 자신을 위한 여러 가..
-
[Kotlin] 코틀린하며 가끔 잊어버리는 내용 (Feat. 개념적인 내용)IT Study/Android 2024. 4. 14. 17:07
1. 다중 패러다임, 코틀린 코틀린은 함수형 프로그래밍과 객체 지향 프로그래밍을 지원하는 다중 패러다임 언어. 함수형 언어 1. 일급 함수 (변수에 함수를 할당할 수 있다.) 2. 불변성 (val과 같은 키워드가 존재한다.) 3. 고차 함수 (filter, map 등) 객체 지향 언어 1. 클래스와 객체 (데이터 + 메서드가 결합된 클래스를 정의한다. 이를 인스턴스화하여 객체 생성할 수 있다.) 2. 상속 (재사용 가능) 3. 캡슐화 (접근 제어자 등을 통해 숨기고 공유하기가 가능) 4. 다형성 (오버로딩, 오버라이딩) 2. 변수, 자료형 변수는 되도록 val, not mutable과 같이 불변성을 가져가는 것이 좋다. 그러나 변수에 값이 할당되지 않음을 하나의 정보로 사용하는 경우가 있을텐데, 이때에는..
-
[Android/Kotlin] 옵저버 패턴이란?IT Study/Android 2024. 4. 10. 18:10
1. 옵저버 패턴이란 옵저버 패턴은 객체 지향 프로그래밍에서 중요한 디자인 패턴 중 하나이다. 옵저버 패턴에 대해 알아보기 전, 먼저 옵저버가 무엇인지 생각해보자. Observer(이하 옵저버)란, 감시자 혹은 관찰자를 의미한다. 말 그대로 무언가를 감시하는 역할을 수행하고 있다는 것. 즉, 어떤 이벤트가 일어나는 것을 감시하는 패턴을 의미한다. 마치 안드로이드 리스너와 같은 개념 아닌가? 1. 버튼을 클릭했을 때 2. 키보드를 통해 글자를 입력할 때 3. API 콜에 대한 응답 데이터를 수신받았을 때 시스템에 의해 발생하는 동작, 이벤트가 발생했을 때 이를 감시하고 미리 정의된 동작을 수행하도록 하는 것이 바로 옵저버 패턴이다. 그렇다면 옵저버 패턴은 어떤 원리로 동작하는 것일까? 미리 힌트를 주자면,..
-
[Kotlin] tailrec(꼬리 재귀)란IT Study/Android 2024. 2. 3. 16:46
1. 꼬리 재귀란? 꼬리 재귀(Tail Recursion)는 함수의 마지막 연산이 재귀 호출임을 의미합니다. 일반적인 재귀 호출과는 다르게, 꼬리 재귀는 함수가 자신을 호출함과 동시에 종료 됩니다. 이러한 특성 때문에, 꼬리 재귀는 컴파일러나 인터프리터에 의해 루프로 변환될 수 있습니다. 2. 꼬리 재귀의 기본 사용 방법 Kotlin에서는 tailrec 키워드를 사용해 꼬리 재귀 함수를 작성할 수 있습니다. 팩토리얼 계산을 예를 들어보죠. (1) 기본 재귀 함수 (꼬리 재귀 함수 ❌) fun factorial(n: Int): Long { return if (n 4 * factorial(3) ---> 3 * factorial(2) ----> 2 * factorial(1) -----> 1 factorial(..
-
[Android] 액티비티의 라이프 사이클 (생명주기, Life cycle)IT Study/Android 2024. 1. 20. 14:47
안녕하세요. 이번 블로그 글에서는 Android 개발 시 주로 사용되는 Activity의 생명주기에 대해 알아보도록 하겠습니다. 먼저, Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 시나리오를 작성하였습니다. 📊 테스트 시나리오 1. Activity 실행, 종료 시의 Life cycle 2. 다른 App 실행 시 (= 홈 버튼 클릭 시)의 Life cycle 3. 다른 Activity 실행 시의 Life cycle 또한 Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 코드를 작성하였습니다. MainActivity.kt package fastcampus.part0.kotlin import android.content.Intent import android..
-
[Kotlin] 배열의 내용을 비교하는 contentEqualsIT Study 2024. 1. 3. 14:05
Kotlin에서 배열을 비교할 때는 주의해야 합니다. 배열이 참조 타입이기 때문에 '==' 연산자를 사용하면 배열의 참조가 비교되기 때문인데요. 이는 다음과 같은 예제 코드에서 확인할 수 있습니다. val arr1 = intArrayOf(1, 2, 3) val arr2 = intArrayOf(1, 2, 3) println(arr1 == arr2) // 출력: false arr1과 arr2는 같은 내용을 가지고 있지만, '==' 연산자를 사용하면 false가 출력됩니다. 이는 '==' 연산자가 두 배열의 참조를 비교하기 때문입니다. 그렇다면, 배열의 내용 자체를 비교하려면 어떻게 해야 할까요? 이때 사용할 수 있는 것이 바로 contentEquals() 함수입니다. 이 함수는 배열의 내용이 같은지를 비교합..
-
[백준 알고리즘/Kotlin] 1157번 단어 공부 (feat. maxOrNull, count, indexOf)IT Study/백준 알고리즘 2023. 12. 27. 14:15
이번 글에서는 Kotlin을 이용해 문자열에서 가장 빈도수가 높은 알파벳을 찾는 방법에 대해 알아보겠습니다. 이 문제는 대소문자를 구분하지 않고, 가장 빈도수가 높은 알파벳이 여러 개인 경우 '?'를 출력하는 것이 특징입니다. 최종 코드와 함께 사용된 주요 메서드를 보도록 하겠습니다. 최종 코드 fun main() = System.`in`.bufferedReader().use { br -> val word = br.readLine().uppercase() val counts = IntArray(26) for (char in word) { counts[char - 'A']++ } val max = counts.maxOrNull() val maxCount = counts.count { it == max } ..