안드로이드 [Kotlin] - 코루틴(Coroutine) 2 - 코루틴 실습(생성과 취소)
2022. 5. 25. 21:27
Android
📌 코루틴 사용하기 라이브러리 추가 build.gradle에 아래 코드를 추가해준다. implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' runblocking 코루틴을 만드는 가장 간단한 함수는 runBlocking이다. 이렇게 코루틴을 만드는 함수를 코루틴 빌더라고 부른다. runBlocking은 코루틴을 만들고 코드 블록이 수행이 끝날 때까지 runBlocking 다음의 코드를 수행하지 못하게 막게 된다. 말 그대로 블로킹을 하는 것이다. 언제까지 블로킹시킬까? runBlocking 블록 안에 있는 코드가 모두 실행을 끝마칠 때까지 블록 된다. runBlocking { ... } 안에 2초의 delay를 주었으므로 2초 동안..
안드로이드 [Kotlin] - 코루틴(Coroutine) 1 - 코루틴의 기본 이론
2022. 5. 25. 21:27
Android
📌 루틴(Routine)이란 무엇인가? 루틴이란 프로그램의 일부로써 특정한 일을 실행하기 위한 일련의 명령 우리는 프로그래밍에서 이러한 일련의 명령을 함수라 부른다. 서브루틴이란 무엇인가? 프로그래밍에서 함수 안에 함수가 있을 경우, 바로 안쪽의 함수를 서브루틴이라 부른다. 예를 들어 아래와 같은 코드가 있다고 하자 fun routine1() { routine2() // routine2는 routine1의 서브루틴 } fun routine2() { println("Routine2") } 위 코드에서 routine1을 실행하면 routine2가 속에서 수행된다. 우리는 이러한 routine2를 routine1의 서브루틴이라고 한다. 서브루틴은 루틴에 대해 순차적으로 수행된다는 특징이 있다. 만약 루틴이 수..
안드로이드 - Fragment Lifecycle (프래그먼트 생명주기)
2022. 5. 18. 23:52
Android
📌 생명주기란? Lifecycle은 Life + cycle의 합성어이다. 말 그대로 앱이 탄생하고 진행되며 죽음(?)에 이르기까지의 과정이라고 생각하면 된다. Activity, Fragment, Service 총 세 가지 종류의 Lifecycle이 존재한다. 지난번 Acticity 생명주기에 이어 이번에는 Fragment 생명주기에 대해 다뤄보려고 한다. 📌 프래그먼트 특징 프래그먼트 뷰는 프래그먼트 생명주기와 독립적으로 관리되는 별도의 생명주기가 있다. 프래그먼트가 다른 생명주기로 전환되려면 FragmentManager가 있어야 한다. 여기서 FragmentManager란? 공식문서 FragmentManager is the class responsible for performing actions on ..
[파이썬] 프로그래머스 - 이중우선순위큐
2022. 5. 17. 22:57
Algorithm
📌 Heap Heap은 데이터를 정렬된 상태로 저장하기 위해서 사용하는 자료구조이다. 파이썬의 heapq 모듈은 이진트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공한다. min heap을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며, min heap에서 가장 작은 값은 언제나 인덱스 0, 즉, 이진트리의 루트에 위치한다. 내부적으로 min heap 내의 모든 원소(k)는 항상 자식 원소들(2k+1, 2k+2) 보다 크기가 작거나 같도록 원소가 추가되고 삭제된다. 이 문제에서 힙의 최댓값을 제거하는데 약간의 요령이 필요한데 바로 nlargest라는 함수이다. heapq 모듈에 이 용도에 적합한 nlargest()와 nsmallest() 함수가 있다. heapq.nl..
[파이썬] 프로그래머스 - 더 맵게
2022. 5. 10. 20:05
Algorithm
📌 Heap Heap은 데이터를 정렬된 상태로 저장하기 위해서 사용하는 자료구조이다. 파이썬의 heapq 모듈은 이진트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공한다. min heap을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며, min heap에서 가장 작은 값은 언제나 인덱스 0, 즉, 이진트리의 루트에 위치한다. 내부적으로 min heap 내의 모든 원소(k)는 항상 자식 원소들(2k+1, 2k+2) 보다 크기가 작거나 같도록 원소가 추가되고 삭제된다. 힙에 원소 추가 heapq 모듈의 heappush() 함수를 이용하여 힙에 원소를 추가할 수 있다. 첫 번째 인자는 원소를 추가할 대상 리스트이며 두 번째 인자는 추가할 원소를 넘긴다. (heapq 모듈에..