프로그래밍 언어/Kotlin 기초(17)
-
Kotlin에서 == vs === 차이
주말마다 진행하는 프로그래머스 스터디에서는 다양한 언어가 공존한다.Kotlin, C#, Swift, JavaScript.여기서 JavaScript 소스코드를 보는데 “===” 연산자가 나왔다.Kotlin에도 해당 연산자가 있는지 찾아보았다. 1. == (Structural Equality - 구조적 동등성)두 객체의 값이 같은지 확인할 때 사용한다.내부적으로 equals() 함수를 호출한다.즉, 내용만 같으면 true가 나온다.예제data class Person(val name: String)fun main() { val person1 = Person("개발새발") val person2 = Person("개발새발") println(person1 == person2) // ✅ true ..
2025.03.18 -
Kotlin에서 유용한 고차 함수 정리
나는 C언어, Java로 코딩을 처음 배워서 그런가 함수형 언어에는 익숙해지지 않는다.Kotlin의 최대 장점인 고차 함수도 제대로 활용하지 못해 코딩테스트 공부를 할 때 애를 많이 먹었다.그래서 유용한 고차 함수들을 정리해봤다.1. map - 리스트 변환할 때 사용❌ Java 스타일List names = new ArrayList();for (User user : users) { names.add(user.getName());}✅ Kotlin 스타일 (고차 함수 사용)val names = users.map { it.name }2. filter - 특정 조건의 요소만 선택❌ Java 스타일List adults = new ArrayList();for (User user : users) { if (..
2025.02.27 -
Kotlin 코딩테스트의 Kick! 우선순위큐 (Priority Queue)
알고리즘 공부를 하면서 은근 자주 쓰게 되는 기능. 우선순위 큐 ~!어떤 것일까?우선순위 큐 (Priority Queue)우선순위가 높은 요소부터 꺼내는 자료 구조기본적으로 힙(Heap) 구조를 사용하여 내부적으로 요소들을 정렬✅ 특징자동 정렬요소를 add()하면 우선순위가 높은 순서로 정렬됨.하지만 poll()을 호출할 때까지 정렬된 상태는 아니며, 꺼낼 때 우선순위에 따라 자동으로 정렬됨.우선순위 기반우선순위가 높은 요소를 먼저 처리하며, 기본적으로 최소 힙(Min-Heap)을 사용.즉, 가장 작은 값을 우선적으로 꺼냄.최대 힙(Max-Heap)을 사용하려면 Comparator를 설정해야함삽입 시간add() 또는 offer()는 O(log n) 시간 복잡도꺼내는 시간poll()은 O(log n) 시간..
2025.02.15 -
Kotlin inline 함수, 진짜 성능 최적화에 도움이 될까?
나는 Kotlin에서 함수를 만들 때 inline 함수를 자주 쓰는가?솔직히 말하면 그냥 일반 함수로도 충분한데 굳이 사용할 필요성을 느끼지 못했다. 그런데 inline 함수가 성능 최적화에 도움이 된다는 말을 들었다.사실일까?1. inline 함수란?inline 키워드는 고차 함수(high-order function)를 사용할 때 함수 호출을 제거하고,함수 본문을 직접 호출 위치에 삽입하는 기능이다. 즉, 컴파일러가 해당 함수를 호출하는 대신 코드를 직접 복사하셔 삽입(inlining)한다.일반 함수와 inline 함수를 비교한 예제를 확인해보자 ! 일반 함수 vs inline 함수 예제fun executeLambda(lambda: () -> Unit) { println("Before lambda..
2025.02.07 -
Kotlin 상태 관리 | Sealed Class vs Enum Class 차이점
개발을 하나보면 상태 관리가 중요하다.그럴 때 자주 등장하는 Sealed Class와 Enum Class.이 두개의 차이점에 대해 확인해보자. 1. Sealed Class vs Enum Class 차이점!✅ 언제 사용하면 좋을까?sealed class → 상태 관리, API 응답 처리, 다양한 타입을 표현할 때// Sealed Class 사용 예시sealed class NetworkResult { data class Success(val data: String) : NetworkResult() data class Error(val message: String) : NetworkResult() object Loading : NetworkResult()} enum class → 변하지 않는 ..
2025.02.06 -
Kotlin에서 launch와 async는 무엇이 다를까?
🌟 들어가기 전오늘은 launch와 async의 차이점에 대해 학습했다. 두 개 모두 코루틴을 실행할 때 사용되지만, launch는 결과를 반환하지 않고 단순 실행하는 반면,async는 값을 반환할 수 있다는 차이가 있다. 그동안 개발을 해오면서 두개의 차이를 정확하게 모르고 사용했다.그냥 예제 긁어서 복붙…. ㅠㅠ 그래서 파헤쳐본 launch와 async는 무엇이 다를까? 🔍 세부 내용1. launch vs async 차이점launch → 결과를 반환하지 않고, 단순히 새로운 코루틴을 실행async → 결과를 반환하는 Deferred 객체를 생성해서 await()로 값을 받을 수 있음2. 예제 코드import kotlinx.coroutines.*fun main() = runBlocking { ..
2025.02.03