비교 결합하기
Coddy Kotlin 여정의 논리와 흐름 섹션에 포함된 레슨. 63개 중 37번째.
비교 함수를 제공하려면 sortedWith를 사용하세요. compareBy<String> { it.length }는 단어의 길이를 비교하고, .thenBy { it }를 연결하면 길이가 같을 때 단어 자체를 비교합니다. 이후 비교 키는 앞선 모든 키가 같은 경우에만 사용됩니다.
main 안에서:
val order = compareBy<String> { it.length }.thenBy { it }
println(listOf("bb", "a", "aa").sortedWith(order))길이를 기준으로 하면 a가 먼저 오고, 알파벳순 비교가 두 글자 항목 간의 동률을 깹니다.
thenBy는 앞선 비교 키를 대체하지 않고 동률을 해소합니다.
챌린지
중급wordOrder를 매개변수 words: List<String>와 함께 완성하세요. 소문자 ASCII 단어들을 길이가 증가하는 순으로 정렬하고, 동점일 경우 알파벳 순으로 정렬하세요.
위에 더 엄격한 제한이 명시되지 않는 한, 컬렉션은 각 수준에서 최대 100개의 요소를 포함하며, 정수 인수와 정수 컬렉션 값은 -1000에서 1000 사이입니다. 파싱을 위해 제공된 텍스트에는 설명된 대로 유효하지 않거나 범위를 벗어난 표현이 포함될 수 있습니다.
List<String> 타입의 값을 반환하세요. 제공된 입력/출력 코드를 유지하세요. 이 코드는 스칼라 인수를 한 줄에 하나씩 읽습니다. 리스트는 개수로 시작한 후 요소들이 따르며, 맵은 항목 개수로 시작한 후 각 키와 값이 따릅니다. 중첩 리스트는 각 행에 대해 개수-및-요소 형식을 반복합니다. 제공된 main은 반환 값을 출력한 후 줄바꿈 하나를 출력합니다. 리스트는 Kotlin의 표준 대괄호 형식을 사용합니다. 추가 레이블을 출력하지 마세요.
직접 해보기
fun wordOrder(words: List<String>): List<String> {
// 여기에 솔루션을 작성하세요.
return emptyList()
}
fun main() {
val wordsCount = readln().toInt()
val words = mutableListOf<String>()
for (i0 in 0 until wordsCount) {
val wordsItem = readLine().orEmpty()
words.add(wordsItem)
}
println(wordOrder(words))
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드