https://www.acmicpc.net/problem/2535
난이도 : 실버 5
태그 : 구현, 정렬
설명
점수 순으로 정렬하고,
국가당 최대 두개의 메달만 받을 수 있습니다.
소스코드
import java.util.StringTokenizer
fun main() {
val br = System.`in`.bufferedReader()
val n = br.readLine().toInt()
val arr = Array(n) { intArrayOf(0, 0, 0) }
repeat(n) {
val st = StringTokenizer(br.readLine())
arr[it][0] = st.nextToken().toInt()
arr[it][1] = st.nextToken().toInt()
arr[it][2] = st.nextToken().toInt()
}
// arr[] 배열의 세번째 값(국가)를 기준으로 정렬
arr.sortByDescending { it[2] }
val cntForCountries = Array(n + 1) { 0 }
var cnt = 0
arr.forEach {
if (cnt == 3) return
if (cntForCountries[it[0]] < 2) {
println("${it[0]} ${it[1]}")
cntForCountries[it[0]]++
cnt++
}
}
}
arr.sortByDescending { it[2] }
array.sortBy { (조건) } 을 사용하여 특정 조건으로 오름차순 정렬을 할 수 있습니다
내림차순 정렬을 하고 싶을 땐 sortByDescending을 사용하면 됩니다.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 1431번] [Kotlin] 시리얼 번호 (0) | 2022.11.09 |
---|---|
[백준 10825번] [Kotlin] 국영수 (0) | 2022.11.09 |
[백준 1520번] [Kotlin] 내리막 길 (0) | 2022.11.03 |
[백준 5014번] [Kotlin] 스타트링크 (0) | 2022.11.03 |
[백준 1717번] [Kotlin] 집합의 표현 (0) | 2022.10.26 |