Programmers/Lv. 0 (完)

[Kotlin] Programmers 코딩 기초 트레이닝 Day 20 함수(메서드)

chattymin 2023. 7. 18. 16:31
728x90
반응형

배열의 길이를 2의 거듭제곱으로 만들기

class Solution {
    fun solution(arr: IntArray): IntArray {
        var answer: IntArray = arr

        repeat(getNum(arr.size)){
            answer = answer.plus(0)        
        }

        return answer
    }

    fun getNum(size: Int): Int{
        var two = intArrayOf(1, 2, 4, 8, 16, 32, 64, 128, 256, 512)

        two.forEach { 
            if (it >= size)
                return it - size
        }

        return 1024 - size
    }
}
/*
	fun solution(arr: IntArray): IntArray {
        val size = arr.size
        var n = 1

        while (n <= size) n *=2

        return arr + IntArray(n-size){0 }
    }
*/

 

 

배열 비교하기

class Solution {
    fun solution(arr1: IntArray, arr2: IntArray): Int = 
        if (arr1.size > arr2.size) 1 
        else if (arr1.size < arr2.size) -1 
        else arr1.sum().compareTo(arr2.sum())
}

 

 

문자열 묶기

class Solution {
    fun solution(strArr: Array<String>): Int = 
        strArr.groupBy { it.length }
              .maxOf { (key, value) ->  value.size}
}

 

 

배열의 길이에 따라 다른 연산하기

class Solution {
    fun solution(arr: IntArray, n: Int): IntArray {
        var result = arr
        
        if (arr.size % 2 == 0){
            for (i in 0 until result.size){
                if (i % 2 == 1)
                    result[i] += n
            }
        } else{
            for (i in 0 until result.size){
                if (i % 2 == 0)
                    result[i] += n
            }
        }
        
        return result
    }
}

 

 

뒤에서 5등까지

class Solution {
    fun solution(num_list: IntArray): IntArray = num_list.sorted().slice(0 until 5).toIntArray()
}
728x90
반응형