알고리즘/백준

[백준] 2577번 : 숫자의 개수 - 코틀린(Kotlin)

Junuuu 2022. 11. 1. 00:01
반응형

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

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

문제 해석

곱셈의 결과로 어떤 숫자가 몇 번 나왔는지 구하는 문제입니다.

 

 

코드

fun main() {
    val counts = Array(10){0}

    val a = readLine()!!.toInt()
    val b = readLine()!!.toInt()
    val c = readLine()!!.toInt()

    val multipleResult = (a * b * c).toString()

    for(index in multipleResult.indices){
        val curNumber = multipleResult[index].digitToInt()
        counts[curNumber]++
    }

    val stringBuilder =StringBuilder()
    for(index in counts.indices){
        stringBuilder.append("${counts[index]}\n")
    }
    println(stringBuilder.toString())
}

 

 

다른분들의 코드에서 배운 점

fun main(){
    val result = IntArray(10)
    var inputProduct = 1
    for (i in 0 until 3){
        inputProduct *= readln().toInt()
    }
    val string = inputProduct.toString()
    string.forEach { 
        result[it.toString().toInt()]++
    }
    result.forEach {
        println(it)
    }
}

입출력 부분도 반복문을 활용하여 간단하게 구성하였고

for 문대신 함수형 프로그래밍을 사용했습니다.

stringBuilder를 사용하면 성능상 이점이 있을 것이라고 생각했습니다.

내부적으로 최적화가 되는지 오히려 4ms더 빠른 성능을 보여줬습니다.