몰?.루();

백준 10825번 코틀린 (sortedWith, compareBy) 본문

프로그래밍/안드로이드, 코틀린

백준 10825번 코틀린 (sortedWith, compareBy)

toonraon 2022. 3. 24. 10:33

여러가지 정렬 기준에 대해 정렬하는 문제입니다.

fun main() {
    val n = readLine()!!.toInt()
    val inputs = ArrayList<Info>(n)

    repeat(n) {
        val line = readLine()!!.split(" ")
        inputs.add(Info(line[0], line[1].toInt(), line[2].toInt(), line[3].toInt()))
    }

//    inputs.sortedBy { it.name }.sortedByDescending { it.math }.sortedBy { it.english }.sortedByDescending { it.korean }.forEach { println(it.name) }
    inputs.sortedWith(compareBy({ -it.korean }, { it.english }, { -it.math }, { it.name })).forEach { println(it.name) }
}

data class Info(val name: String, val korean: Int, val english: Int, val math: Int)

주석처리 되어있는 게 약간 더 비효율적이지만 쉽고 (수학 성적으로 정렬된 걸 영어 순서로 다시 정렬시키고 그걸 다시 국어 순으로 정렬시키고 그걸 다시 이름순으로 정렬시킴)

그 아래에 있는 게 정석적이고 좀 더 효율적이지만 약간 어려운 코드입니다.

 

람다식으로 가득가득하네요.

Comments