[백준] 농구 경기 (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)