[백준] 농구 경기 (1159)

문제 설명

백준 1159번 문제 링크

입력 및 출력

» 입력

첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다. 다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)

» 출력

상근이가 선수 다섯 명을 선발할 수 없는 경우에는 “PREDAJA” (따옴표 없이)를 출력한다. PREDAJA는 크로아티아어로 항복을 의미한다. 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.

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

입력 출력
18
babic
keksic
boric
bukic
sarmic
balic
kruzic
hrenovkic
beslic
boksic
krafnic
pecivic
klavirkovic
kukumaric
sunkic
kolacic
kovacic
prijestolonasljednikovi
bk

문제 풀이 (KOTLIN)

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    val names = mutableListOf<Char>()

    for (i in 0 until readLine().toInt())
        names.add(readLine()[0])

    names.groupBy { it }
        .filter { it.value.size >= 5 }
        .keys
        .sorted()
        .run {
            if (this.isEmpty()) println("PREDAJA")
            else println(this.joinToString(""))
        }
}

문제 풀이 (SWIFT)

var mapping = [Character: Int]()

for _ in 0..<Int(readLine()!)! {
    let player = readLine()!.first!
    if mapping[player] != nil {
        mapping[player]! += 1
    } else {
        mapping[player] = 1
    }
}

let list = mapping
    .filter { $0.value >= 5 }
    .keys
    .sorted(by: <)
    .map { String($0) }
    .joined(separator: "")

print(list == "" ? "PREDAJA" : list)

태그:

카테고리:

업데이트: