[백준] 데이트 (1296)(kotlin)

문제 설명

백준 1296번 문제 링크

입력 및 출력

» 입력

첫째 줄에 오민식의 영어 이름이 주어진다. 둘째 줄에는 좋아하는 여자가 몇 명인지 N이 주어지고, 셋째 줄부터 N개의 줄에 여자의 이름이 하나 씩 주어진다. N은 50보다 작거나 같고, 모든 이름은 알파벳 대문자로만 구성되어 있고 모두 길어야 20글자이다.

» 출력

오민식이 선택한 여자의 이름을 출력한다.

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

입력 출력
OHMINSIK
9
YOONA
TIFFANY
YURI
HYOYEON
SOOYOUNG
SEOHYUN
TAEYEON
JESSICA
SUNNY
HYOYEON

문제 풀이1

import java.lang.Exception

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    var mL = 0
    var mO = 0
    var mV = 0
    var mE = 0
    readLine().forEach {
        when (it) {
            'L' -> mL++
            'O' -> mO++
            'V' -> mV++
            'E' -> mE++
        }
    }

    val n = readLine().toInt()
    val list = mutableListOf<String>()
    var woman = ""
    var max = 0

    repeat(n) {
        var l = mL
        var o = mO
        var v = mV
        var e = mE
        val next = readLine()
            .onEach { ch ->
                when (ch) {
                    'L' -> l++
                    'O' -> o++
                    'V' -> v++
                    'E' -> e++
                }
            }
        list.add(next)
        val pctg = ((l + o) * (l + v) * (l + e) * (o + v) * (o + e) * (v + e)) % 100
        
        if (pctg > max) {
            max = pctg
            woman = next
        } else if (pctg == max && woman > next) {
            woman = next
        }
    }

    if (max == 0) println(list.sortedBy { it }[0])
    else println(woman)
}