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(" "))
}
}
다중정렬이 정렬 후 값을 또 정렬하는 형태라 시간복잡도를 크게 가져가는건 어쩔수 없나 싶기도(..
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 13909번 문제풀이 (0) | 2024.04.01 |
---|---|
Kotlin] 백준 2485번 문제풀이 (0) | 2024.03.26 |
Kotlin] 백준 10989번 문제풀이 (0) | 2024.03.13 |
Kotlin] 백준 1193번 문제풀이 (0) | 2023.06.19 |
Kotlin] 백준 2292번 문제풀이 (0) | 2023.06.16 |