반응형 공부55 안드로이드 코틀린의 코루틴 ( Kotlin Coroutine ) ? #1 코루틴? (Coroutine) 동시성 프로그래밍 개념을 코틀린에 도입한 것이 코루틴입니다. 사용되어지고 있는 쓰레드를 중단하지 않으면서 비동기적으로 실행되게하는 코드입니다. 복잡한 AsyncTask 또는 다수 불필요한 쓰레드 관리를 직접 해주지 않아도 되며, 더 효율적으로 동작합니다. 코루틴의 기능 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다. 구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행합니다. 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달됩니다. 많은 Jetpack 라이브러리에 코루틴을 완전히 지원하는 확장 프로그램이 포함되어 있습니다. 일부 라이브.. 2023. 12. 22. Kotlin(코틀린) - 오브젝트(Object, Companion Object) Object? object 키워드는 싱글톤, 클래스의 단일 인스턴스를 선언할 때 사용됩니다. 클래스를 선언하고 동시에 해당 클래스의 인스턴스를 생성하는 것과 유사합니다. 오브젝트는 하나의 인스턴스만 있는 클래스를 만들 때 사용됩니다. object MySingleton { fun doSomething() { println("작업 중...") } } //사용하고자 호출할 때 MySingleton.doSomething() Companion Object? companion object는 포함된 클래스의 인스턴스와 결합된 특수한 종류의 오브젝트입니다. companion object의 멤버는 클래스 이름을 사용하여 직접 액세스할 수 있습니다. 클래스와 관련된 정적 메서드 및 상수를 그룹화하는 데 사용됩니다. cla.. 2023. 12. 8. Kotiln(코틀린) - 반복문(forEach) forEach ? Kotlin에서 반복문을 사용할 때 흔히 쓰이는 고차함수 중 하나입니다. 이 함수는 컬렉션의 각 요소에 대해 주어진 람다 표현식을 실행하는 역할을 합니다. Kotlin에서는 forEach를 사용하여 배열이나 리스트와 같은 Iterable 객체를 반복하는데 주로 활용합니다 배열 또는 리스트에서 사용하며, 직관적이고 코드 가독성이 뛰어납니다. 기본적인 형태 val numbers = listOf(1, 2, 3, 4, 5) numbers.forEach { // 각 요소에 대한 작업을 수행 println(it) } forEach는 numbers 리스트의 각 요소에 대해 중괄호 안에 있는 람다 표현식을 실행합니다. it은 현재 반복되고 있는 요소를 나타내는 람다의 암시적인 인자입니다. 코드에서는 .. 2023. 12. 8. Kotlin(코틀린) - 확장함수(Extension functions) 확장함수(Extension Functions)? 이미 존재하는 클래스에 새로운 함수를 추가하는 메커니즘을 제공합니다. 이는 기존 클래스를 수정하지 않고도 해당 클래스에 새로운 기능을 추가할 수 있는 강력한 기능입니다. 확장 함수는 클래스의 멤버 함수처럼 호출될 수 있으며, 새로운 기능을 제공하기 위해 클래스 외부에서 정의됩니다. 확장함수는 언제 사용할 수 있을까? 확장 함수는 주로 기존 클래스나 라이브러리를 수정할 수 없는 상황에서 새로운 기능을 추가하거나 사용성을 향상시킬 때 유용하게 사용됩니다. 외부 라이브러리를 확장하여 해당 라이브러리가 제공하지 않는 기능을 쉽게 추가하거나, 코드의 가독성을 높이기 위해 유틸리티 함수를 만들 때 확장 함수를 활용할 수 있습니다. 확장 함수는 이미 존재하는 클래스에 .. 2023. 12. 7. Kotlin(코틀린) - 지연 초기화(lateinit , lazy) 지연 초기화 ( lateinit, lazy ) ? lateinit과 lazy는 모두 Kotlin에서 변수를 지연 초기화하는 데 사용되는 기술입니다. 그러나 두 가지 기술은 목적과 사용법에서 차이가 있습니다. 두 기능은 초기화를 나중으로 미루는데 사용되지만, lateinit은 초기화 이전에는 사용할 수 없고, lazy는 처음 사용될 때 초기화되며 이후에는 더 이상 초기화하지 않습니다. 선택은 상황과 목적에 따라 다르며, lateinit은 var 변수에, lazy는 val 변수에 사용됩니다. lateinit lateinit은 주로 클래스의 프로퍼티에 사용되며, 선언 이후 어느 시점에서나 초기화할 수 있는 기능을 제공합니다. 주로 의존성 주입이나 특정 메서드에서 초기화해야 하는 경우에 사용됩니다. class .. 2023. 12. 7. Kotlin - 두 정수 사이의 합 ( 22 ) 프로그래머스 문제 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. a b return 3 5 12 3 3 3 5 3 12 코틀린 두 정수 사이의 합 답 1) class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 if (a b) { for (i in b..a) { answer += i } } else { answer = a.toLong() } return answer }.. 2023. 12. 7. Kotlin - 하샤드 수 프로그래머스 코딩 연습 ( 21 ) 프로그래머스 문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. x return 10 true 12 true 11 false 13 false 하샤드 수? "하샤드 수 (harshad number) , "니번 수" 라고도 불리우는 수입니다. 하샤드 수 는 (주어진 진법 에서) 그 수의 "각 자릿수 숫자의 합" 으로 그 수가 "나누어지는 양의 정수" 를 말합니다. "자기자신이 각 자리숫자의 합의 몇 배가 되어서 약수와 배수의 관계가 되는 수" 를 일컫는 말입니다. 코틀린 하샤드 수.. 2023. 12. 7. Kotlin - 정수 제곱근 판별 프로그래머스 코딩 연습 ( 19 ) 프로그래머스 문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. n return 121 144 3 -1 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 코틀린 정수 제곱근 판별 답 1) import kotlin.math.* class Solution { fun solution(n: Long): Long { var answer = sqrt(n.toDouble()).toLong() if(answer*answer == .. 2023. 12. 6. Kotlin - 문자열을 정수로 바꾸기 프로그래머스 코딩 연습 ( 18 ) 프로그래머스 문제 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 코틀린 문자열을 정수로 바꾸기 답 class Solution { fun solution(s: String) = s.toInt() } 코틀린 풀이 s.toInt(): 주어진 문자열 s를 정수로 변환합니다. Kotlin의 내장 함수 toInt()를 사용.. 2023. 12. 6. 이전 1 2 3 4 5 ··· 7 다음 728x90 반응형