코딩테스트

[BOJ/1065번] 한수

쵱니 2020. 10. 4. 08:49

각 자리수의 등차수열인 수 구하기

문제 : https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 ��

www.acmicpc.net

내 코드

fun main() {
	val hanSu = mutableListOf<Boolean>()
	hanSu += (false)
	repeat(readLine()!!.toInt()) {
		hanSu.add(isHanSu(it+1))
	}
	print(hanSu.count { it })
}

fun isHanSu(n: Int): Boolean {
	if (n == 1000 || n == 0)
		return false
	else if (n < 100)
		return true
	else if (n / 100 - (n % 100 / 10) == (n % 100 / 10) - n % 10)
		return true
	else
		return false
}

뛰어난 코드

fun main() {
    val n = readLine()!!.toInt()
    println(if (n < 100) n else {
        (100..minOf(999, n)).count {
            it / 10 % 10 * 2 == it / 100 + it % 10
        } + 99
    })
}

느낀점 : 훨씬 간결하고 이해하기 쉽다.