백준 알고리즘

[백준 1065] [Kotlin] 한수

purecho 2021. 7. 15. 13:47
import java.io.*
import kotlin.math.*


fun main() {

    val br = BufferedReader(InputStreamReader(System.`in`))
    val N = br.readLine().toInt()

    // 한수 판별 함수
    fun ariSeq(x: Int): Int {
        var num = log10(x.toDouble()).toInt()+1
        // 두자리수 까지는 모두 한수로 판별
        if (num < 3) {
            return 1
        } else {
            // 각 자리수 배열에 넣기
            var d = x
            val arr = ArrayList<Int>()
            while (d > 0) {
                var remain = d%10
                d /= 10
                arr.add(remain)
            }
            // 각 자리수의 차를 비교하여 한수 판별
            for (i in 0..arr.size-3) {
                if ((arr[i] - arr[i+1]) != (arr[i+1] - arr[i+2])) {
                    return 0
                }
            }
            return 1
        }
    }


    var cnt = 0    // 한수 총 개수
    for (x in 1..N) {
        cnt += ariSeq(x)
    }
    println(cnt)

    br.close()

}

 

메모리  시간  언어  코드 길이
12640  KB 92  ms Kotlin (JVM) 1014  B