문제 링크
문제 해설
가장 키가 큰 사람들의 이름을 입력된 순서대로 출력하기만 하면 되는 문제다. 알고리즘 분류 상으로는 정렬으로 분류되어 있지만 정렬을 할 필요는 없다.
학생의 이름과 키가 입력될 때마다 리스트에 해당 학생을 저장함과 동시에 현재 가장 큰 키와 비교하여 키의 최대값을 갱신한다. 모든 학생을 입력 받았으면 리스트에서 키의 최대값과 일치하는 키를 가진 학생들을 차례대로 출력하면 된다.
Kotlin에서는 컬렉션 객체에 filter
함수를 사용하여 해당 조건에 맞는 요소들만 포함하는 새로운 리스트를 만들 수 있기 때문에 간단하게 구현할 수 있다.
Code
import java.util.StringTokenizer
fun main() = with(System.`in`.bufferedReader()) {
var c: Int
val bw = System.out.bufferedWriter()
while (readLine().also { c = it.toInt() } != "0") {
var max = 0.0
val list = ArrayList<Person>()
repeat(c) {
val st = StringTokenizer(readLine())
list.add(Person(st.nextToken(), st.nextToken().toDouble().also { max = maxOf(max, it) }))
}
bw.write("${list.filter { it.height == max }.joinToString(" ")}\n")
}
bw.close()
}
class Person(val name: String, val height: Double) {
override fun toString() = this.name
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 4948 : 베르트랑 공준 (0) | 2022.11.29 |
---|---|
[Kotlin] 백준 2839 : 설탕 배달 (0) | 2022.11.28 |
[Kotlin] 백준 1920 : 수 찾기 (0) | 2022.11.26 |
[Kotlin] 백준 1065 : 한수 (0) | 2022.11.25 |
[Kotlin] 백준 4673 : 셀프 넘버 (1) | 2022.11.25 |
댓글