https://www.acmicpc.net/problem/11650
난이도 : 실버 5
태그 : 정렬
설명
2차원 상에 존재하는 좌표들을 x 좌표 기준으로,
x 좌표가 동일하다면 y 좌표를 기준으로 정렬하는 문제입니다.
코틀린에서는 compareBy를 사용하여 다중 조건을 갖고 정렬할 수 있습니다.
x, y 인자를 갖는 Data Class인 Node를 만들고, Node의 x 값, 두번째로 Node의 y 값을 기준으로 정렬하면 됩니다.
소스코드
data class Node (val x: Int, val y:Int)
fun main() {
val n = readLine()!!.toInt()
val arr = Array<Node?>(n) { null }
for(i in 0 until n) {
val temp = readLine()!!.split(" ")
arr[i] = Node(temp[0].toInt(), temp[1].toInt())
}
arr.sortWith(compareBy<Node?> { it!!.x }.thenBy {it!!.y})
arr.forEach {
println("${it!!.x} ${it!!.y}")
}
}
후기
코틀린으로 다중 조건으로 정렬을 하는 법을 처음 알게 해줬던 문제였습니다
코틀린 특유의 람다식을 사용하면 간편하게 짤 수 있는 점이 맘에 드네요.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 8871번] [Kotlin] Zadanie próbne 2 (0) | 2023.01.23 |
---|---|
[백준 8545번] [Kotlin] Zadanie próbne (0) | 2023.01.23 |
[백준 7489번] [Kotlin] 팩토리얼 (0) | 2023.01.17 |
[백준 1343번] [Kotlin] 폴리오미노 (0) | 2023.01.17 |
[백준 26736번] [Kotlin] Wynik meczu (0) | 2023.01.17 |