문제 링크
문제 해설
간단한 구현 문제이다. 각 테스트 케이스마다 매 입력으로 주어지는 득표 수 중 최대치와 득표 수의 합계를 구한다. 최대 득표 수의 개수가 1이 아니면(= 최다 득표자가 2명 이상이면) "no winner"를 출력한다. 최대 득표 수의 개수가 1이라면 득표 수의 합계를 2로 나눈 값과 최대 득표 수를 비교하여 "majority winner R" 또는 "minority winner R"를 출력한다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val bw = System.out.bufferedWriter()
repeat(readLine().toInt()) {
var max = 0
var sum = 0
val candidates = IntArray(readLine().toInt()) {
readLine().toInt().also { n ->
max = maxOf(max, n)
sum += n
}
}
when (candidates.count { it == max }) {
1 -> bw.write("${if (max > sum / 2) "majority" else "minority"} winner ${candidates.indexOf(max) + 1}\n")
else -> bw.write("no winner\n")
}
}
bw.close()
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 21939 : 문제 추천 시스템 Version 1 (0) | 2023.02.14 |
---|---|
[Kotlin] 백준 14698 : 전생했더니 슬라임 연구자였던 건에 대하여(Hard) (0) | 2023.02.12 |
[Kotlin] 백준 12931 : 두 배 더하기 (0) | 2023.02.05 |
[Kotlin] 백준 1629 : 곱셈 (0) | 2023.02.02 |
[Kotlin] 백준 25306 : 연속 XOR (0) | 2023.01.29 |
댓글