코딩테스트
[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
})
}
느낀점 : 훨씬 간결하고 이해하기 쉽다.