Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/2535

 

2535번: 아시아 정보올림피아드

첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사

www.acmicpc.net

 

난이도 : 실버 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을 사용하면 됩니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.