티스토리 뷰

Kotlin(native / JVM)으로 풀어보기


4673 셀프 넘버 (native)

fun constructor(number: Int): Int {
    return number + sumOfNumbers(number)
}

fun sumOfNumbers(number: Int): Int {
    var digit = number
    var sum = 0

    while (digit != 0) {
        sum += (digit % 10)
        digit /= 10
    }

    return sum
}

fun main() {
    val list = linkedSetOf<Int>()

    for (i in 1..10000) {
        list.add(i)
    }

    for (i in 1..10000) {
        list.remove(constructor(i))
    }

     list.forEach { println(it) }
}

 

1065 한수 (native)

fun result(number: Int): Int {
    var count = 0

    for (num in 1..number) {
        count += resultArithmeticSequence(num)
    }

    return count
}

fun resultArithmeticSequence(number: Int): Int {
    return if (number < 10) 1
    else findArithmeticSequence(isArithmeticSequence(createDigits(number)))
}

fun createDigits(number: Int): MutableList<Int> {
    val digits = mutableListOf<Int>()
    var digit = number
    
    while (digit != 0) {
        digits.add(digit % 10)
        digit /= 10
    }

    return digits
}

fun isArithmeticSequence(digits: MutableList<Int>): Boolean {
    val array = mutableListOf<Int>().apply {
        for (i in 0 until digits.size - 1) {
            this.add(digits[i] - digits[i + 1])
        }
    }

    return array.indices.none { array[0] != array[it] }
    
//    다양한 삽질
//    return array.indices.filter { array[0] != array[it] }.size == 0

//    return array.indices.filter { array[0] == array[it] }.size == array.size

//    return array.stream()
//        .filter { it == array[0] }
//        .count().toInt() == array.size

//    return array.filterIndexed { index, _ -> array[0] == array[index] }.size == array.size
}

fun findArithmeticSequence(isFind: Boolean): Int {
    return if (isFind) 1
    else 0
}

fun main() {
    println(result(readLine()!!.toInt()))
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함