알고리즘/백준

[백준] 10871번 : X보다 작은 수 - 코틀린(Kotlin)

Junuuu 2022. 10. 20. 00:01
반응형

https://www.acmicpc.net/problem/10871

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

문제 해석

수열 A를 이루는 정수 N개가 주어집니다.

이때 중복을 허용하는지는 문제에서 나와있지 않은 것 같습니다.

수열 A에서 X보다 작은 수를 " "로 구분하여 출력하면 됩니다.

 

문제 풀이 전 설계

MutableList를 하나 선언하고 그 List에 X보다 작은 수를 스트림 filter를 활용하여 새로운 리스트로 만들어내고 출력해보고자 합니다.

 

이때 출력을 위해 Kotlin에 Java의 StringBuilder와 유사한 것이 있는지 찾아보려고 합니다.

 

코드

import java.io.IOException

fun main() {
    //10 5
    val input = readLine() ?: throw IOException()
    val splitInput = input.split(" ")
    val n = splitInput[0].toInt()
    val x = splitInput[1].toInt()

    //1 10 4 9 2 3 8 5 7 6
    val numbers = readLine() ?: throw IOException()
    val splitNumbers = numbers.split(" ")

    val result = splitNumbers
        .map{ it.toInt() }
        .filter { it < x }
        .toList()
        .joinToString(" ")

    println(result)

}

splitNumbers인 List를 int로 변환하고 x보다 작은 값들을 filtering 한 뒤 List로 변환합니다.

이후 jointToString을 활용하여 공백으로 분리지어 String으로 만들어준 후 출력합니다.

 

 

다른분들의 코드를 통해 배운 점

- 굳이 List를 사용하지 않고 바로 StringBuilder에 쌓아서 출력하는 방식도 있습니다.