백준 알고리즘

[백준 4673] [Kotlin] 셀프 넘버

purecho 2021. 7. 15. 13:46
fun main() {

    val max = 10000
    var arr = IntArray(max) 
    var ori = 1

    // 생성자 만드는 함수
    fun d(n: Int) {
        var num = n
        var sum = n
        
        // 생성자 만들기
        while (num > 0) {
            sum += num%10
            num /= 10
        }

        // 생성자가 있으면 배열에 저장, 재귀함수
        if (sum >= max) {
            return
        } else {
            arr[sum]++
            d(sum)
        }
    }

    // max 까지 반복
    while (ori < max) {
        d(ori++)
    }

    // 셀프 넘버 추출
    for (i in arr.indices) {
        if (i != 0 && arr[i] == 0) {
            println(i)
        }
    }

}

 

메모리  시간  언어  코드 길이
12888  KB 172  ms Kotlin (JVM) 693  B