본문 바로가기

분류 전체보기143

[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.
[Algorithm/Kotlin] 에라토스테네스의 체(Sieve of Eratosthenes) 쉽게 이해하기 에라토스테네스의 체는 특정 범위에서 소수를 빠르고 효율적으로 구하는 방법입니다.작은 소수의 배수를 제거함으로써 소수만 남기는 아이디어를 기반으로 합니다.이 글에서는 코드와 함께 이해한 내용을 정리 해 두도록 하겠습니다.에라토스테네스의 체의 핵심 동작1. i의 범위 제한: i in 2..Math.sqrt(limit.toDouble()).toInt()이 범위는 왜 필요한가?소수의 배수 제거는 대칭적으로 이루어집니다.예: 16의 약수는 (2,8),(4,4)처럼 대칭적으로 나타납니다.따라서 sqrt(limit)​까지만 확인하면 충분합니다.sqrt(16) = 4이므로 i=2,3,4까지만 반복하면 됩니다.코드 예제val limit = 16for (i in 2..Math.sqrt(limit.toDouble()).to.. 2025. 1. 20.
[Android/Kotlin] removeAt: 요소 제거와 반환 동작 이해 코틀린의 MutableList는 동적으로 크기가 조정되는 리스트로, 다양한 메서드를 제공하여 데이터를 관리할 수 있습니다.그중에서도 removeAt 메서드는 특정 인덱스의 요소를 제거하면서 해당 요소를 반환하는 기능을 제공합니다.이번 글에서는 removeAt의 동작 원리와 사용 예제를 살펴보겠습니다.1. removeAt 메서드란?removeAt(index)는 리스트의 특정 인덱스에 있는 요소를 제거하고, 그 제거된 요소를 반환합니다. 이 메서드는 다음 두 가지 작업을 수행합니다:리스트에서 요소 제거:지정된 인덱스의 요소를 삭제합니다.삭제 후, 리스트의 크기가 1 감소합니다.제거된 요소 반환:삭제된 요소 자체를 반환하여, 호출한 코드에서 해당 값을 사용할 수 있습니다.2. removeAt의 동작 과정동작 .. 2025. 1. 17.
[DataStructure/Kotlin] pop과 peak의 차이점: 스택의 두 가지 주요 기능 스택(Stack)은 데이터를 후입선출(LIFO, Last In First Out) 방식으로 저장하는 자료 구조입니다. 스택에서 자주 사용되는 두 가지 주요 연산은 pop과 peak입니다. 이 두 연산은 비슷하게 보이지만, 의미와 사용 목적에서 분명한 차이가 있습니다.이를 이해하기 쉽게 정리 해 보겠습니다. 1. pop과 peak의 정의pop:스택의 가장 위에 있는 요소를 제거하면서 반환합니다.스택의 상태를 변경하며, 크기가 줄어듭니다.peak:스택의 가장 위에 있는 요소를 그대로 반환합니다.스택의 상태를 변경하지 않습니다. 단순히 데이터를 확인하는 용도로 사용됩니다. 2. 코틀린 구현 예제val stack = mutableListOf()fun push(data: Int) { stack.add(dat.. 2025. 1. 17.
[DataStructure/Kotlin] 스택 구현: MutableList vs Array의 차이점과 구현 방법 스택(Stack)은 데이터를 후입선출(LIFO, Last In First Out) 방식으로 저장하는 자료 구조입니다.코틀린에서 스택을 구현할 때 주로 사용하는 두 가지 주요 데이터 구조는 MutableList와 Array입니다.이번 글에서는 두 가지 방법으로 스택을 구현하는 코드와 함께, 각 방식의 차이점과 특징을 비교해보겠습니다.1. MutableList를 사용한 스택 구현MutableList는 코틀린의 동적 리스트로, 크기를 필요에 따라 자동으로 확장하거나 축소할 수 있습니다.이를 사용하면 스택을 간단하고 유연하게 구현할 수 있습니다.코드 예제:val stack = mutableListOf()fun push(data: Int) { stack.add(data) // 스택의 끝에 데이터 추가}fun.. 2025. 1. 17.
[Algorithm/Kotlin] 백준 10816번 숫자 카드 2: 시간 복잡도를 계산해 시간초과 해결하기 이 문제를 풀때, 처음에는 단순히 이중 반복문을 떠올려 문제를 해결했지만 입력 크기를 고려하지 못해 시간 초과 실패를 경험했습니다. 이 경험을 토대로, 단순히 문제를 푸는 것에 그치지 않고 시간 복잡도를 계산하고 효율적인 알고리즘을 설계하는 것이 얼마나 중요한지를 배웠습니다.이후 시간 복잡도를 다시 계산하고, 효율적인 방법(groupingBy)을 도입해 문제를 해결할 수 있었습니다.각각의 문제 풀이법과 시간 복잡도 계산 내용을 정리해 두고자 합니다.문제 설명숫자 카드는 정수 하나가 적혀 있는 카드입니다. 상근이는 숫자 카드 N개를 가지고 있으며, 정수 M개가 주어졌을 때, 이 수가 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성해야 합니다.입력 조건첫째 줄: 상근이가 가지고 있는 숫자 카드의 개수 .. 2025. 1. 16.
[Algorithm/Kotlin] 백준 2164번 카드2: Queue를 활용한 풀이법 문제 설명 N장의 카드가 있습니다. 카드는 1부터 N까지 번호가 붙어 있고, 1번 카드가 제일 위, N번 카드가 제일 아래에 놓여 있습니다. 이 상태에서 다음 동작을 반복하여 카드가 한 장만 남을 때까지 진행합니다:제일 위에 있는 카드를 버린다.그 다음, 제일 위에 있는 카드를 제일 아래로 옮긴다.마지막에 남는 카드를 구하는 프로그램을 작성합니다.문제 해결 아이디어이 문제는 큐(Queue) 자료구조를 사용하면 직관적으로 해결할 수 있습니다. 문제에서 요구하는 동작이 큐의 FIFO(First In First Out) 구조와 일치하기 때문입니다.큐 초기화:   1부터 N까지의 숫자를 큐에 삽입합니다.   예: N=6이면 [1,2,3,4,5,6].홀수와 짝수 턴 처리:   홀수번째 턴:   poll() 메서드.. 2025. 1. 6.
[Algorithm/Kotlin] 백준 2839번 설탕 배달 문제 설명설탕 배달 문제는 다음과 같습니다.상근이는 설탕 공장에서 3kg 봉지와 5kg 봉지를 사용해 정확히 Nkg의 설탕을 배달하려고 합니다. 이때 봉지의 개수가 최소가 되도록 설탕을 나눌 방법을 찾는 문제입니다.만약 정확히 나눌 수 없다면 -1을 반환해야 합니다.문제 해결 아이디어이 문제의 핵심은 5kg 봉지를 최대한 먼저 사용하고, 나머지를 3kg 봉지로 채우는 방법입니다. 이유는 5kg 봉지를 최대한 사용했을 때 봉지 개수가 더 줄어들 가능성이 높기 때문입니다.로직 설계기저 조건:   N인 경우 설탕을 정확히 나눌 수 없으므로 -1을 반환합니다.5kg 봉지를 최대한 사용:   N을 5로 나눈 몫만큼 5kg 봉지를 사용합니다.   남은 설탕 무게를 계산합니다.남은 설탕 처리:   남은 설탕이 3으로.. 2025. 1. 6.
[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.
반응형