본문 바로가기

앱 개발/Algorithm

sortedDescending, joinToString (정수 내림차순으로 배치하기)

< sortedDescending >

 컬렉션의 요소를 내림차순으로 정렬하는 함수이다. 기존의 컬렉션을 변경하지 않고 새롭게 정렬된 컬렉션을 반환한다. 아래 코드에서 numbers.sortedDescending()는 numbers 리스트를 내림차순으로 정렬한 새로운 리스트를 반환한다. 기존의 리스트는 변경되지 않는다.

val numbers = listOf(5, 3, 8, 1, 7)
val sorted: List<Int> = numbers.sortedDescending()
    
println(numbers) // [5, 3, 8, 1, 7]
println(sorted) // [8, 7, 5 ,3, 1]

 사용자가 지정한 기준에 따라 정렬하려면 sortedByDescending 함수와 함께 Comparator를 사용할 수 있다.

data class Person(val name: String, val age: Int)

fun main() {
    val people = listOf(
        Person("Alice", 30),
        Person("Bob", 35),
        Person("Charlie", 20)
    )
    val sortedByAge: List<Person> = people.sortedByDescending { it.age }
    
    println(people) // [Person(name=Alice, age=30), Person(name=Bob, age=35), Person(name=Charlie, age=20)]

    println(sortedByAge) // [Person(name=Bob, age=35), Person(name=Alice, age=30), Person(name=Charlie, age=20)]
}


< joinToString >

 Kotlin의 표준 라이브러리에 포함된 문자열 조합 함수로서 컬렉션의 각 요소를 구분자와 함께 연결하여 하나의 문자열로 반환한다. 주로 리스트나 배열 등의 컬렉션을 문자열로 변환할 때 사용된다. 다양한 매개변수를 받아 문자열 연결 시 유연하게 사용할 수 있다.

fun main() {
    val list = listOf("apple", "banana", "orange")

    // 기본적인 사용
    val result1: String = list.joinToString()
    println(result1) // apple, banana, orange

    // 구분자, 접두사, 접미사 추가
    val result2: String = list.joinToString(separator = " | ", prefix = "[", postfix = "]")
    println(result2) // [apple | banana | orange]
}

-------------------------------------------------------------------------------------------------------------------------

< 문제 20번 >

 

 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를 들어 n이 118372면 873211을 리턴하면 됩니다.

 

 

< solution >

 

class Solution {
    fun solution(n: Long): Long {
        require(n in 1..8000000000L)
        val digits = n.toString().map { it.toString().toLong() }

        // n의 각 자릿수를 내림차순으로 정렬한 후에 새로운 문자열로 반환
        val result = digits.sortedDescending().joinToString("").toLong()
        return result
    }
}

728x90