본문 바로가기

Android82

[Android/Kotlin] fold 사용법과 예제 Kotlin의 fold는 컬렉션을 순회하면서 초기값을 설정하고, 이전 연산의 결과를 누적하면서 값을 계산하는 데 사용됩니다. 특히, 누적된 값을 유지하면서 새로운 값을 추가해야 하는 경우 유용합니다.이번 글에서는 fold를 활용하여 ATM 대기 시간 최소화 문제를 해결하는 예제를 통해 fold의 동작 원리를 알아보겠습니다.fold의 기본 구조initial: 초기값 (연산을 시작할 때 사용할 값)operation: 리스트의 각 요소를 순회하며 누적값(acc)과 현재 요소(T)를 사용해 연산을 수행하는 람다 함수결과값(R)이 누적되면서 최종 결과를 반환기본 예제: 리스트의 합 구하기val numbers = listOf(1, 2, 3, 4, 5)val sum = numbers.fold(0) { acc, num.. 2025. 2. 5.
[Android/Compose] Spacer를 활용한 UI 요소 중앙 및 하단 배치 Compose를 이용해 화면을 구성하며, UI의 한 요소는 화면 중앙에 배치하고 다른 요소는 하단에 고정해야 하는 상황이 있었습니다.이 요구사항을 어떻게 해결할 지 고민하던 중, Spacer(modifier = Modifier.weight(1f))를 활용하여 원하는 대로 배치할 수 있었습니다.이 글에서는 해당 방법을 이용해 원하는 레이아웃을 구현한 과정을 정리해 보겠습니다.Spacer를 활용한 중앙 및 하단 배치구현 코드@Composablefun BusinessCardApp() { Column( modifier = Modifier.fillMaxSize(), // 전체 화면을 차지하도록 설정 horizontalAlignment = Alignment.CenterHorizonta.. 2025. 2. 4.
[Android/Kotlin] 코틀린의 mutableMapOf()는 왜 LinkedHashMap을 사용할까? 코틀린에서 mutableMapOf()를 사용하면 내부적으로 LinkedHashMap이 생성됩니다.처음에는 mutableMapOf()를 단순히 사용했지만, 왜 기본 구현체가 LinkedHashMap일까? 라는 의문이 들었습니다.이 글에서는 그 이유를 고민해보고, HashMap, LinkedHashMap, TreeMap의 차이를 비교한 내용을 정리해보겠습니다.1. mutableMapOf()는 LinkedHashMap을 사용한다우선, mutableMapOf()가 내부적으로 어떤 자료구조를 사용하는지 확인해보겠습니다. 즉, 코틀린의 mutableMapOf()는 기본적으로 LinkedHashMap을 사용한다는 것을 확인할 수 있었습니다.그렇다면 왜 LinkedHashMap을 기본으로 사용할까?2. LinkedHa.. 2025. 2. 4.
코루틴과 스레드, 그리고 프로세스: 그 유사성과 차이 운영체제를 공부하다 보면 자연스럽게 프로세스(Process)와 스레드(Thread)의 개념을 배우게 됩니다.최근 코루틴(Coroutine)을 공부하면서, 스레드와 비슷한 점이 많아 보이면서도 작동 방식에는 차이가 있다는 점이 흥미로웠습니다.특히, 운영체제에서 배운 프로세스와 스레드의 개념이 코루틴을 이해하는 데 큰 도움이 될 수 있다는 생각이 들어, 나중에 참고할 수 있도록이 세 가지를 비교하며 정리해 보았습니다.프로세스와 스레드 간단 정리프로세스(Process)란?실행 중인 프로그램을 뜻하며, 운영체제가 관리하는 독립적인 실행 단위입니다.각 프로세스는 자체 메모리(Code, Data, Heap, Stack)를 가지고 있으며, 다른 프로세스와 자원을 공유하지 않습니다.스레드(Thread)란?하나의 프로세.. 2025. 1. 24.
[Android/Kotlin] 코틀린 컬렉션 함수: any와 all 코틀린의 컬렉션 함수 중 any와 all은 컬렉션 내부의 요소를 조건에 따라 검사할 때 사용하는 매우 유용한 함수입니다.이 두 함수는 조건을 간단하고 가독성 좋게 표현할 수 있어 자주 활용됩니다.\1. any 함수정의컬렉션의 요소 중 하나라도 조건을 만족하면 true를 반환.조건을 만족하는 요소를 찾으면 즉시 검사를 종료합니다.구문collection.any { 조건식 }반환값Boolean: 조건을 만족하는 요소가 하나라도 있으면 true, 그렇지 않으면 false.예제 1: 숫자 리스트에서 짝수가 하나라도 있는지 확인val numbers = listOf(1, 3, 5, 6, 7)val hasEven = numbers.any { it % 2 == 0 }println(hasEven) // 출력: true 리.. 2025. 1. 21.
[Android/Kotlin] removeAt: 요소 제거와 반환 동작 이해 코틀린의 MutableList는 동적으로 크기가 조정되는 리스트로, 다양한 메서드를 제공하여 데이터를 관리할 수 있습니다.그중에서도 removeAt 메서드는 특정 인덱스의 요소를 제거하면서 해당 요소를 반환하는 기능을 제공합니다.이번 글에서는 removeAt의 동작 원리와 사용 예제를 살펴보겠습니다.1. removeAt 메서드란?removeAt(index)는 리스트의 특정 인덱스에 있는 요소를 제거하고, 그 제거된 요소를 반환합니다. 이 메서드는 다음 두 가지 작업을 수행합니다:리스트에서 요소 제거:지정된 인덱스의 요소를 삭제합니다.삭제 후, 리스트의 크기가 1 감소합니다.제거된 요소 반환:삭제된 요소 자체를 반환하여, 호출한 코드에서 해당 값을 사용할 수 있습니다.2. removeAt의 동작 과정동작 .. 2025. 1. 17.
[Android/Kotlin] sortWith vs sortedWith: 차이와 사용법 코틀린에서는 리스트를 정렬할 때 sortWith와 sortedWith를 자주 사용합니다. 둘은 비슷하게 보이지만, 실제 사용 목적과 동작 방식에서 중요한 차이가 있습니다. 이 글에서는 두 함수의 차이점과 사용 방법에 대해서 정리 해 두겠습니다.1. sortWith원본 리스트를 변경하는 함수입니다.MutableList에서만 사용할 수 있습니다.반환값이 없으며, 리스트 자체를 정렬합니다.사용 예제val mutableList = mutableListOf(3, 1, 4, 1, 5, 9)mutableList.sortWith(compareBy { it }) // 오름차순 정렬println(mutableList) // 출력: [1, 1, 3, 4, 5, 9] compareBy는 정렬 기준을 지정하는 람다를 받아서 처.. 2025. 1. 2.
[Android/Kotlin] 비상 사운드 효과 구현: 강제 볼륨 조절 비상 상황에서 긴급 신고를 했을 때, 기기의 볼륨이 꺼져 있거나 낮게 설정되어 있는 경우에도 사운드 알림이 들릴 수 있도록 하는 기능이 필요했습니다. 처음에는 AudioManager.STREAM_ALARM 타입으로 설정되어 있어 강제로 볼륨을 올리는 기능이 제대로 작동하지 않았습니다. 하지만 이를 AudioManager.STREAM_MUSIC 타입으로 변경한 후 정상적으로 동작하게 되었고, 이 과정을 통해 얻은 구현 방법을 공유하고자 합니다.구현 코드아래 코드는 기기의 볼륨을 강제로 최대치로 설정하고 비상 사이렌 소리를 재생하는 방법을 보여줍니다.private fun emergencyEffect(isPlay: Boolean) { if (isPlay) { // AudioManager 시스.. 2024. 12. 13.
[Android/Kotlin] 뒤로가기 기능을 구현하는 방법: OnBackPressedDispatcher 활용법 안드로이드 개발을 하다 보면, 뒤로가기 버튼을 눌렀을 때 특정 동작을 처리해야 하는 경우가 자주 발생합니다.기존에는 onBackPressed 메서드를 오버라이드하여 이를 구현했지만, 안드로이드 12(API 31)부터 이 메서드가 Deprecated되었습니다. 대신 OnBackPressedDispatcher를 이용한 새로운 방식이 도입되었습니다.이번 글에서는 안드로이드에서 뒤로가기 기능을 구현하는 새로운 방법과 그 이유를 정리 해 두겠습니다. 왜 onBackPressed가 Deprecated되었을까?onBackPressed는 뒤로가기 버튼의 동작만을 단순히 처리하도록 설계된 메서드였습니다. 하지만 Fragment와 Lifecycle 기반 컴포넌트가 점차 중요해지면서 뒤로가기 이벤트를 더 유연하게 처리할 필.. 2024. 12. 3.
반응형