본문 바로가기
  • 개발하는 곰돌이
Algorithm/BOJ

[Kotlin] 백준 11292 : 키 큰 사람

by 개발하는 곰돌이 2022. 11. 28.

문제 링크

 

11292번: 키 큰 사람

민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였

www.acmicpc.net



문제 해설

가장 키가 큰 사람들의 이름을 입력된 순서대로 출력하기만 하면 되는 문제다. 알고리즘 분류 상으로는 정렬으로 분류되어 있지만 정렬을 할 필요는 없다.

 

학생의 이름과 키가 입력될 때마다 리스트에 해당 학생을 저장함과 동시에 현재 가장 큰 키와 비교하여 키의 최대값을 갱신한다. 모든 학생을 입력 받았으면 리스트에서 키의 최대값과 일치하는 키를 가진 학생들을 차례대로 출력하면 된다.

 

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

댓글