Kotlin/Kotlin문제풀이

Programmers Kotlin 문제 풀이 21 ~ 30

Happy._. 2024. 4. 26. 06:34

하샤드 수
https://school.programmers.co.kr/learn/courses/30/lessons/12947

class Solution {
    fun solution(x: Int): Boolean {
     if(x % x.toString().toList().map{ Character.getNumericValue(it) }.sum() == 0) return true else return false
    }
}

 

두 정수 사이의 합

https://school.programmers.co.kr/learn/courses/30/lessons/12912

import kotlin.math.max
import kotlin.math.min

class Solution {
    fun solution(a: Int, b: Int): Long {
        val min = min(a, b).toLong()
        val max = max(a, b).toLong()
        
        return (min..max).sum().toLong()
    }
}


콜라츠 추측

https://school.programmers.co.kr/learn/courses/30/lessons/12943

class Solution {
    fun solution(num: Int): Int {
        var number = num.toLong()

        if (number == 1.toLong()) return 0
    
        for (index in 1..500) {
            if (number % 2.toLong() == 0L) number /= 2 else number = (number * 3) + 1
            if (number == 1.toLong()) return index
        }
        
        return -1
    }
}


서울에서 김서방 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/12919

class Solution {
    fun solution(seoul: Array<String>): String {
        return "김서방은 ${seoul.indexOf("Kim")}에 있다"  
    }
}


나누어 떨어지는 숫자
https://school.programmers.co.kr/learn/courses/30/lessons/12910

class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        val result = arr.filter { it % divisor == 0 }.sorted().toIntArray()
        if (result.size == 0) return intArrayOf(-1) else return result
    }
}

 

음양 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/76501

class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray): Int {
        return signs.mapIndexed { index, b ->  if (b == true) absolutes[index] else -absolutes[index]}.sum().toInt()
    }
}

 

핸드폰 번호 가리기
https://school.programmers.co.kr/learn/courses/30/lessons/12948

class Solution {
    fun solution(phone_number: String): String {
        val length = phone_number.length
        return "*".repeat( length - 4) + phone_number.drop(length - 4)
    }
}

 

없는 숫자 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/86051

class Solution {
    fun solution(numbers: IntArray): Int {
        return 45 - numbers.sum()
    }
}

 

제일 작은 수 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/12935

arr.min() 또는 arr.minBy { it } 안됨, 프로그래머스 컴파일러 버전 1.6.10

class Solution {
    fun solution(arr: IntArray): IntArray {
        if (arr.size == 1)  {
            return arrayOf(-1).toIntArray()
        } else {
            var min = arr[0]

            for (number in arr) {
                if (number < min) min = number
            }

            return arr.filterNot { min == it }.toIntArray()
        }
    }
}

 

가운데 글자 가져오기
https://school.programmers.co.kr/learn/courses/30/lessons/12903

class Solution {
    fun solution(s: String): String {
        val half = s.length / 2
        if (s.length % 2 == 0) return s.substring(half - 1..half) else return s[half].toString()
    }
}