스터디(beakjoon)
Kotlin] 백준 11650번 풀이
김마리님
2024. 3. 14. 10:11
https://www.acmicpc.net/problem/11650
더보기
이 문제는 다중정렬 문제이다.
x를 먼저 정렬하고, x값이 같다면 y를 정렬해야하는.
코틀린에는 다중정렬에 대한 매서드가 존재한다.
list.sortWith(compareBy)
list.sortedWith(compareBy)
-ed의 차이는.. 거 다른 정렬함수랑 같이 sortWith는 기존 리스트를 정렬하고, sortedWith는 정렬된 새로운 객체를 만든다.
compareBy 내부에 정렬 기준을 정한다. 정렬 우선순위 기준으로 기준을 넣으면 된다.
예를 들어, Pair을 가진 리스트의 a 값을 먼저 정렬하고, a값이 같다면 b를 정렬한다 가정하면,
list.sortedWith(compareBy({it.first}, {it.second}))
list.sortWith(compareBy({it.first}, {it.second}))
이렇게 이용하면 쉽게 다중정렬할 수 있다.
이를 이용해서 이번 문제를 풀면 ,,
fun main(args: Array<String>) {
question11650()
}
fun question11650() {
val count = readln().toInt()
val list = mutableListOf<List<Int>>()
for (i in 1 .. count) {
list.add(readln().split(" ").map { it.toInt() })
}
list.sortedWith(compareBy({it[0]}, {it[1]})).forEach {
println(it.joinToString(" "))
}
}
다중정렬이 정렬 후 값을 또 정렬하는 형태라 시간복잡도를 크게 가져가는건 어쩔수 없나 싶기도(..
반응형