본문 바로가기
알고리즘/구현(백준)

[2023-06-05] 5800 성적 통계 (Kotlin)

by joh9911 2023. 6. 5.

 

문제 링크: https://www.acmicpc.net/problem/5800

 

5800번: 성적 통계

첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다

www.acmicpc.net

 

15분 걸렸습니다.

 

package sixtysecond
import java.io.*
import java.util.*
import kotlin.collections.ArrayList

fun main(){
    val br = BufferedReader(InputStreamReader(System.`in`))
    val k = br.readLine().toInt()
    val arr = Array(k){ArrayList<Int>()}
    // StringTokenizer로 입력을 받아, 첫 번째 인자 만큼 반복문을 돌려
    // 배열에 넣어주었습니다.
    repeat(k){
        val token = StringTokenizer(br.readLine())
        val n = token.nextToken().toInt()
        for (index in 0 until n){
            arr[it].add(token.nextToken().toInt())
        }
    }
    for (index in arr.indices){
        println("Class ${index + 1}")
        arr[index].sortByDescending{it}
        var largestGap = 0
        for (i in 1 until arr[index].size){
            largestGap = Math.max(largestGap, Math.abs(arr[index][i] - arr[index][i - 1]))
        }
        println("Max ${arr[index].max()}, Min ${arr[index].min()}, Largest gap ${largestGap}")
    }
}

 

댓글