Kotlin Academy · 강의

그룹화와 분할

데이터를 정리합니다

레슨 2/413개 단계

그룹화와 분할은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

데이터 구성

컬렉션을 여러 범주로 나누어야 할 때가 있습니다. Kotlin은 키를 기준으로 요소를 묶는 groupBy와 조건에 따라 두 목록으로 나누는 partition을 제공합니다.

partition 함수

partition은 컬렉션을 두 목록의 쌍으로 나눕니다. 하나에는 조건을 만족하는 요소가, 다른 하나에는 만족하지 않는 요소가 들어갑니다.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val (even, odd) = numbers.partition { it % 2 == 0 }
    println("Even: $even")
    println("Odd: $odd")
}

쌍 구조 분해

partition은 Pair를 반환하므로 위에 나온 것처럼 두 개의 이름 있는 변수로 바로 구조를 분해할 수 있습니다. .first와 .second에 접근할 수도 있습니다.

fun main() {
    val result = listOf(10, -5, 3, -8).partition { it >= 0 }
    println(result.first)
    println(result.second)
}

groupBy 함수

groupBy는 선택 함수가 각 키를 만들고, 값으로는 해당 키를 공유하는 요소들의 목록을 갖는 Map을 만듭니다.

fun main() {
    val words = listOf("apple", "banana", "avocado", "cherry")
    val byFirstLetter = words.groupBy { it.first() }
    println(byFirstLetter)
}

계산된 키로 그룹화하기

키는 문자열의 길이나 나머지처럼 계산된 어떤 값이든 될 수 있습니다.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
    val byRemainder = numbers.groupBy { it % 3 }
    println(byRemainder)
}

값 변환을 적용한 groupBy

groupBy는 각 값을 그룹에 넣기 전에 변환하는 두 번째 람다를 받을 수 있습니다.

fun main() {
    val words = listOf("red", "rose", "blue", "berry")
    val grouped = groupExample(words)
    println(grouped)
}

fun groupExample(words: List<String>) =
    words.groupBy({ it.first() }, { it.uppercase() })

그룹 순회하기

groupBy는 Map을 반환하므로 항목을 순회하며 각 그룹을 처리할 수 있습니다.

fun main() {
    val animals = listOf("cat", "cow", "dog", "duck")
    val groups = animals.groupBy { it.first() }
    for ((letter, list) in groups) {
        println("$letter -> $list")
    }
}

groupingBy로 개수 세기

키별 개수를 세려면 groupingBy 다음에 eachCount를 사용하는 것이 효율적이고 의미도 분명합니다.

fun main() {
    val letters = listOf("a", "b", "a", "c", "b", "a")
    val counts = letters.groupingBy { it }.eachCount()
    println(counts)
}

partition과 filter 비교

조건을 만족하는 요소만 필요하면 filter를 사용합니다. 조건을 만족하는 요소와 만족하지 않는 요소가 BOTH 필요하면 partition이 한 번의 순회로 처리하여 두 목록을 모두 반환합니다.

fun main() {
    val ages = listOf(15, 22, 17, 30, 12)
    val (adults, minors) = ages.partition { it >= 18 }
    println("Adults: $adults, Minors: $minors")
}

groupBy와 partition 중 선택하기

예/아니요 조건으로 정의된 정확히 두 개의 그룹이 필요하면 partition을 사용합니다. 어떤 속성을 키로 삼아 여러 그룹으로 나눌 수 있다면 groupBy를 사용합니다.

실용적인 그룹화

그룹화와 분할을 사용하면 장황한 수동 순회를 맵과 목록으로 대체할 수 있습니다. 의도를 명확하게 표현하고 관리 작업에서 발생하는 오류도 줄여 줍니다.

빠른 확인

partition은 무엇을 반환하나요?

복습

조건에 따라 두 목록으로 나누는 partition, 키를 기준으로 맵에 묶는 groupBy, 그리고 개수를 세는 groupingBy().eachCount()를 배웠습니다. 다음에는 집계를 사용해 컬렉션을 하나의 값으로 줄이는 방법을 알아보겠습니다.

무료로 시작

AI 튜터와 함께 Kotlin을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
51
레슨
203

자주 묻는 질문

“그룹화와 분할” 강의는 무료인가요?

네 — “그룹화와 분할” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“그룹화와 분할”에서 뭘 배우나요?

데이터를 정리합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“그룹화와 분할” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 필터링과 매핑
  2. 그룹화와 분할
  3. 집계
  4. 연관과 평탄화
← Kotlin Academy(으)로 돌아가기