[백준] 주사위 네개 (2484)(kotlin)

문제 설명

백준 2484번 문제 링크

입력 및 출력

» 입력

첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 4개의 눈이 빈칸을 사이에 두고 각각 주어진다.

» 출력

첫째 줄에 가장 많은 상금을 받은 사람의 상금을 출력한다.

예제 입출력(테스트케이스)

입력 출력
4
3 3 3 3
3 3 6 3
2 2 6 6
6 2 1 5
65000

문제 풀이1

import kotlin.math.max

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    var max = 0

    repeat(readLine().toInt()) {
        val dice = readLine().split(" ").map { it.toInt() }.groupingBy { it }.eachCount()
        val result = when (dice.size) {
            1 -> {
                50_000 + dice.keys.toList()[0] * 5_000
            }
            2 -> {
                val tmp = dice.toList()
                when {
                    tmp[0].second < tmp[1].second -> {
                        10_000 + tmp[1].first * 1_000
                    }
                    tmp[0].second > tmp[1].second -> {
                        10_000 + tmp[0].first * 1_000
                    }
                    else -> {
                        2_000 + tmp[0].first * 500 + tmp[1].first * 500
                    }
                }
            }
            3 -> {
                1_000 + dice.filter { it.value == 2 }.toList()[0].first * 100
            }
            else -> {
                dice.maxByOrNull { it.key }!!.key * 100
            }
        }

        max = max(max, result)
    }

    println(max)
}