https://www.acmicpc.net/problem/10825
난이도 : 실버 4
태그 : 정렬
설명
국어는 내림차순,
영어는 오름차순,
수학은 내림차순,
이름으로 오름차순 하는 문제입니다.
편의상 별도의 data class인 Student를 만들어 풀이하였습니다.
소스코드
import java.util.*
private data class Student(var name: String, var kor: Int, var eng: Int, var math: Int)
fun main() {
val br = System.`in`.bufferedReader()
val n = br.readLine().toInt()
val students = Array(n) { Student("", 0, 0, 0) }
repeat(n) {
val st = StringTokenizer(br.readLine())
students[it].name = st.nextToken()
students[it].kor = st.nextToken().toInt()
students[it].eng = st.nextToken().toInt()
students[it].math = st.nextToken().toInt()
}
// 디폴트가 오름차순
students.sortWith(
compareBy(
{ -it.kor }, // -를 붙이면 내림차순
{ it.eng },
{ -it.math },
{ it.name }
)
)
students.forEach { println(it.name) }
}
sortWtih, compareBy를 사용하여 복수의 조건을 갖고 정렬을 진행할 수 있습니다.
조건을 넣을 때, 디폴트로 오름차순이며, -를 붙여 내림차순으로 정렬할 수 있습니다.
마지막으로 forEach를 통해 students 배열 내 원소를 돌며 출력합니다.
후기
여러개의 조건을 갖고 정렬을 하는 문제였습니다.
-를 붙여 내림차순으로 정렬할 수 있는 건 처음 알았네요.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 12100번] [Kotlin] 2048 (Easy) (0) | 2022.11.10 |
---|---|
[백준 1431번] [Kotlin] 시리얼 번호 (0) | 2022.11.09 |
[백준 2535번] [Kotlin] 아시아 정보올림피아드 (0) | 2022.11.09 |
[백준 1520번] [Kotlin] 내리막 길 (0) | 2022.11.03 |
[백준 5014번] [Kotlin] 스타트링크 (0) | 2022.11.03 |