일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 커스텀 뷰
- Thread vs Coroutine
- 코틀린 에러 핸들링
- Android Custom View
- AAC ViewModel
- Hilt 에러
- 코루틴
- 백준 2615
- Sticky Header RecyclerView
- Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
- 코루틴 공식문서
- BOJ
- 안드로이드 무한 스크롤
- 힐트
- android compose orbit
- Android Compose Navigation
- power menu
- 백준
- RecyclerView Sticky Header
- runCatching
- 안드로이드 컴포즈
- 스레드 vs 코루틴
- Coroutine
- hilt
- Kotlin Serialization
- power menu 라이브러리
- Android Compose
- android orbit
- viewmodel
- 코루틴 공식 문서
- Today
- Total
목록전체 글 (59)
Beeeam

https://kotlinlang.org/docs/cancellation-and-timeouts.html Cancellation and timeouts | Kotlin kotlinlang.org 코루틴에서 실행되는 모든 중단 함수들은 취소 요청에 응답을 할 수 있어야 한다. 그러면 코드 실행중 취소 요청이 있는지를 반복적으로 확인해야 하는데 코루틴은 이러한 취소 요청에 대응할 수 있도록 구현이 되어 있다. 취소 요청에 대응하여 코루틴이 취소 되면 CancellationException을 발생 시키면서 종료를 한다. Cancelling coroutine execution (코루틴 실행 취소) 애플리케이션이 장시간 동안 실행되고 있으면 백그라운드의 코루틴들을 관리해야 할 필요가 생긴다. 예를 들어 사용자가 ..

안드로이드 면접 스터디를 진행하면서 코루틴에 대해서 공부하게 되었는데 이를 정리해보려고 한다. 참고로 코루틴 공식 문서를 참고하여 공부하였다. https://kotlinlang.org/docs/coroutines-basics.html Coroutines basics | Kotlin kotlinlang.org 코루틴? 코루틴은 비동기적으로 실행되는 코드를 간소화 하기 위해 사용되는 설계 패턴이다. 스레드와 개념적으로는 비슷하지만 코루틴은 특정 스레드에 포함되지 않는다. 그리고 코루틴은 스레드보다 더 가벼울 수 있다. fun main() = runBlocking { // this: CoroutineScope launch { // launch a new coroutine and continue delay(10..

문제 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 풀이 바둑판에 흑백 돌들이 놓여있고 이를 보고 오목 경기의 승패를 확인하는 문제이다. 한 색의 바둑돌이 같은 방향으로 연속 5개가 이어지면 오목이 된다. 그래서 오목판에 돌이 있으면 그 돌을 타켓으로 삼고 탐색을 시작한다. 탐색의 방향은 총 4 방향으로 우, 하, 우상, 우하 방향으로 탐색을 진행한다. (문제에서 오목이 시작되는 가장 왼쪽에 있는 바둑알(연속된 다섯 개의 바둑알이 세로로 놓인 경우, 그 중 가장 위에 있는 것)을 출력하라고 했기 때문에 왼쪽..

문제 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 풀이 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면, 아래와 같은 과정을 반복한다. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 이제, 남아있는 모든 막대를 풀로 붙여서 Xcm를 만든다. 위와 같은 과정을 거치면 몇 ..

https://developer.android.com/jetpack/guide?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Android Developers 앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함 developer.android.com 위의 안드로이드 공식문서의 앱 아키텍처 가이드를 기반으로 작성함 지금까지 안드로이드 개발을 하면 무지성으로 activity 파일에 기능들을 때려 넣었었다. 사실 이렇게 하면 편하다. 그냥 화면에 맞는 activity 또는 Fragment 파일에 동작할 코드들을 코딩하면 되기 때문이다. 그런데 이런식으로 코딩을 하게되면..

문제 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 숫자들을 입력 받아서 이의 산술 평균, 중앙갑스 최빈값, 범위를 구하는 문제이다. 산술 평균, 중앙값, 범위는 간단한 연산으로 출력을 하였다. 최빈값은 숫자들 중 가장 많이 나타나는 값을 찾는데 여러 개가 있는 경우에는 최빈값 중 두 번째로 작은 값을 출력한다. 키가 숫자이고, 값이 빈도인 딕셔너리를 만들고, 빈도 값중 최대 값을 찾는다. 그리고 방금 찾은 최대 값을 딕셔너리의 값(빈도)들과 비교를 해서 같으면 다른 리스트에 추가를 했다. 마지막으로 리스트의 길이가..

다이나믹 프로그래밍(DP) 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 알고리즘이다. 중복되는 계산을 줄이기 위해서 앞에서 계산한 값을 자료구조에 저장을 하는데 이러한 점 때문에 “기억하며 풀기”라고 불리기도 한다. 그럼 DP를 왜 쓸까? DP는 재귀 함수와 많이 유사한데 재귀 함수를 사용하게 되면 위에서 언급한 것처럼 중복되는 계산이 생긴다. 피보나치 수를 예로 들자면 fibonacci(5)를 구하는 것은 재귀 함수로 해도 문제가 없다. 계산 횟수가 그렇게 많지 않기 때문이다. 하지만 fibonacci(100)을 재귀 함수로 계산하면 어떻게 될까? 많은 시간이 걸린다. 그래서 앞에서 계산했던 값들을 다른 자료구조에 저장을 해놓고 연산할 때 이..

문제 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 풀이 인접한 사탕의 색이 다른 경우 서로 위치를 바꿀 수 있고, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)의 사탕을 모두 먹을 수 있는데 먹을 수 있는 사탕의 최대 개수를 구하는 문제이다. 그래프를 for문으로 돌면서 인접한 사탕과 색이 다른 경우 위치를 바꾼다. 그 다음 check() 함수를 실행한다. check() 함수에서도 그래프를 for문으로 돌면서 인접한 사탕과 색을 비교한다. 색이 같으면 먹을 수 있는 사탕의 최대 개수에 1을 더한다. check() 함수가 끝나면 위치를 바꿨던 사탕의 위치를 원래대로 돌려놓는다. 그래프를 다 탐색을 하면 먹..