코딩테스트

프로그래머스 | 제일 작은 수 제거하기 | Kotlin

다시은 2024. 1. 23. 09:49

 

정렬을 해서 인덱스가 0인 요소를 제거하면 순서가 바껴서 그대로 반환할 수 없다.

 

풀이 실패

 

요소를 제거하기 위해 array가 아닌 다른 컬렉션으로 바꾼 뒤 제거하고 다시 array로 반환해야 한단다.

 

 

다른 사람 풀이

class Solution {
    fun solution(arr: IntArray): IntArray {
        var answer = intArrayOf()
        var arrs = arr.toMutableList() // MutableList 로 변환
        arrs.remove(arrs.minOrNull()) // minOrNull()로 최솟값 제거
        answer = arrs.toIntArray() // 다시 IntArray 로 변환
        if(arrs.size == 0) answer = intArrayOf(-1) // 빈 배열일 경우 
        return answer
    }
}

 

 


전혀 못 풀어서 속상하다...당연히 제출도 안했다...이런건 체크해두고 꼭 다시 풀기 🫡


12/30

특정요소를 제거해야한다

배열이 아닌 변경가능한 리스트로 바꿔서 제거하자

 

maxOrNull / minOrNull

요소가 있으면 최대값/최소값, 없으면 null 반환

maxBy / minBy { it. }

최대값과 최소값으로 나온 요소에 대한 it에 대한 식의 결과

 

컬렉션의 확장함수 끝이 없구나

 


01.23

다른 사람 풀이

class Solution {
    fun solution(arr: IntArray): IntArray = if(arr.size == 1) arrayOf(-1).toIntArray() 
                                            else arr.filter { it != arr.min() }.toIntArray()
}

요소가 하나뿐이라면 -1을 가지고 있는 배열을 반환하고

아니라면 filter 조건을 이용해 arr 의 최솟값이 아닌 경우만 걸러내서 배열로 반환한다.