Kotlin

1. 코틀린에서의 람다 표현식이 무엇인가?- 람다 표현식은 함수를 명시적으로 선언하지 않고도 함수와 유사한 구조를 정의하는 간결한 방법입니다. - 인수로 전달하거나 변수에 저장할 수 있는 코드 블록을 만들 수 있습니다. - 람다 표현식은 간결하고 인라인 함수 동작을 제공하는 데 유용합니다.val sum = { a: Int, b: Int -> a + b } // Lambda expressionval result = sum(3, 4) // Invoking the lambda expressionprintln(result) // Output: 7 2. 코틀린에서 고차 함수란 무엇인가?- 고차 함수(High-Order Function)란 다른 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다.- 함수를 변..
- getIdentifier()는 이름(String)으로 앱의 리소스 ID를 가져오는 함수입니다.resources.getIdentifier(name: String, defType: String, defPackage: String) name: 찾고 싶은 리소스의 이름 (문자열)defType: 리소스의 종류 (drawable, string, layout, id, color 등)defPackage: 패키지 이름 (context.packageName을 사용하면 현재 앱의 패키지)- Drawable 리소스 반환하기context.resources.getIdentifier("ic_weather_sunny_day", "drawable", context.packageName) 만일 조건에 해당하는 리소스가 존재하지 않으..
ACTION_PICK으로 선택이 아니라 보기 상태로 갤러리를 진입하는 방법입니다.val intent = Intent(Intent.ACTION_VIEW)intent.type = "image/*"startActivity(intent)초기에는 위 코드로 단순하게 진입할 수 있었으나 매 진입 시마다 "지원되지 않는 파일 형식입니다"라는 Toast가 팝업 되었습니다.보통 ACTION_VIEW는 특정 파일을 열도록 되어 있기 때문에 type에 지정한 경로로는 제대로 된 파일 형식을 열어주지 못하고 image 폴더 전체를 보여주게 됩니다.이러한 오류 현상을 기반으로 갤러리 앱을 열지 않으려면 갤러리 앱 자체의 package name을 찾아 intent 처리해 주면 되겠습니다.val galleryIntent = act..
다음과 같은 View가 구성되어 있다고 가정해 보겠습니다. - home_add_btn_background 여기서 간혹 테마 설정 및 각종 효과를 위해 테두리의 색상을 변경하고 싶을 때가 있습니다.이 경우 view의 background 또는 foreground의 속성을 수정해 주면 됩니다.단, 코틀린 코드에서 XML로 정의된 shape의 stroke 색상을 동적으로 변경하려면 GradientDrawable을 수정해야 합니다. GradientDrawable이란 Android에서 사용되는 그래픽 객체로, 그라데이션(Gradient), 모서리 반경(Corner Radius), 테두리(Stroke), 배경 색상(Solid Color) 등을 설정할 수 있는 유연한 도구입니다. XML 파일이나 코..
프로젝트 진행 중에 전체 리스트에서 랜덤으로 값을 가져와야 하는 일이 생겨서 코틀린에서 방법을 찾아보다 shuffled라는 메서드를 제공하는 것을 알았습니다.. wowfun getRandomItems(list: List, count: Int): List { return if (list.size 위 함수를 구현하여 랜덤 값 count 개수만큼 추출할 수 있습니다.
· Algorithm
문제널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.배열에 자연수 x를 넣는다.배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.프로그램은 처음에 비어있는 배열에서 시작하게 된다.입력첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 자연수는 231보다 작다.출력입력에서 0이 주어진 횟수만큼 답을 출력한다. 만약 배열이 비어 있는 경우인데 가장 큰 값을 출력하라고 한 경우에는 0을 ..
· Algorithm
투 포인터(Two Pointers) 알고리즘은 정렬된 배열에서 효율적으로 특정 조건을 만족하는 값을 찾거나, 구간을 탐색하기 위해 사용되는 알고리즘입니다. 두 개의 포인터를 배열의 양 끝에 배치하거나 특정 위치에서 시작해, 이를 이동시키며 조건을 만족하는 값을 찾습니다. 정렬된 배열에서 가장 많이 사용됩니다.두 포인터를 사용하여 한 번의 탐색으로 문제를 해결하므로 시간 복잡도는 보통 O(N)입니다.이분 탐색처럼 중간 값을 탐색하지 않고, 포인터를 이동시켜 범위를 좁혀 나가는 방식입니다.투 포인터의 동작 원리배열의 양 끝에서 시작하거나, 시작 지점을 설정합니다.각 포인터의 값에 따라 조건을 확인합니다.조건에 따라 왼쪽 포인터를 오른쪽으로 이동하거나 오른쪽 포인터를 왼쪽으로 이동합니다.두 포인터가 교차하거나..
· Algorithm
배열의 중간 요소를 반복적으로 확인하며 탐색 범위를 절반으로 줄여나갑니다. 시간 복잡도는 아래와 같습니다.작동 원리정렬된 데이터: 이분 탐색은 반드시 정렬된 데이터에서만 동작합니다.중간 값 선택: 배열의 중간 값을 선택합니다.조건 비교:찾는 값이 중간 값보다 작으면 왼쪽 절반을 탐색합니다.찾는 값이 중간 값보다 크면 오른쪽 절반을 탐색합니다.찾는 값이 중간 값과 같으면 탐색을 종료합니다.반복: 값을 찾거나 범위가 비워질 때까지 반복합니다.fun binarySearch(array: IntArray, target: Int): Int { var low = 0 var high = array.size - 1 while (low return mid // 값을 찾은 경우 arra..
Expandable menu위처럼 클릭할 때마다 열렸다 닫혔다를 반복하는 메뉴 레이아웃 구성 방법입니다.Compose의 AnimatedVisibility를 활용하여 간단하게 Expand 효과를 적용할 수 있습니다.기본 작동 방식visible: Boolean 값을 통해 콘텐츠의 표시 여부를 결정합니다.애니메이션 효과: 요소가 보이거나 사라질 때 애니메이션 효과를 자동으로 적용합니다.@Composablefun ColumnScope.AnimatedVisibility( visible: Boolean, modifier: Modifier = Modifier, enter: EnterTransition = fadeIn() + expandVertically(), exit: ExitTransition..
MVI 패턴이란?Model - View - Intent의 약자로, 단방향 데이터 흐름을 가지는 패턴입니다.State를 중심으로 UI에 전달하는 방식으로서 여기서 Intent는 기존에 알고 있는 Intent와는 다른 개념입니다. Model: 상태(State)로, UI에서 보일 데이터 또는 상태입니다.View: 화면(UI)을 구성하는 요소로, Model의 상태 변화를 관찰하여 이를 반영합니다.Intent: 사용자의 액션이나 이벤트를 정의한 것으로, 이를 통해 Model이 업데이트됩니다. 상태가 중심인 MVI에서는 데이터는 불변의 구조로 구성되며, 그로 인해 상태가 변할 때 필요한 부분만 갱신되면서 효율성이 증가합니다. MVI 패턴 장점1. 단방향 데이터 흐름 (Unidirectional Data Flow)상..
SeungYong.Lee
'Kotlin' 태그의 글 목록 (3 Page)