Dev/Algorithm

간만의 알고리즘 공부 - 15 (제일 작은 수 제거하기)

healthyryu 2024. 7. 14. 22:58
문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

 

입출력 예

 

 

내가 처음에 푼 방법

fun solution(arr: IntArray): IntArray {
    return if (arr.size == 1) {
        intArrayOf(-1)
    } else {
        arr.sortedArrayDescending().dropLast(1).toIntArray()
    }
}

 

그런데 아무리 풀어도 제출 후 채점하기 에서 하나도 통과하지 못했습니다.

아무리 생각해봐도 이해가 안가서 왜 이게 안풀리는건지 이해를 못해서 첨삭을 받았습니다.

 

코드 첨삭

fun solution(arr: IntArray): IntArray {
    if (arr.size == 1) {
        return intArrayOf(-1)
    }

    val minValue = arr.minOrNull() ?: 0
    return arr.filter { it != minValue }.toIntArray()
}

 

그런데 내 머릿속이 잘못 되었음을 이제서야 알게되었습니다.

입출력의 예를 보고 자연스럽게 배열을 정렬하고 있었던것입니다.

머리에는 자연스럽게 정렬하는걸 당연하게 정하고 넘어가니 아무리 풀어도 채점의 테스트를 전혀 통과하지 못했던것입니다.

 

또다시 머리에서 문제에도 없는 조건을 마음대로 추가해서 문제를 풀어버렸습니다...

 

반응형