Chapter02/코딩테스트

[ 코딩테스트 ] 제일 작은 수 제거하기

EmmaDev_v 2025. 3. 20. 14:33

 

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

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

 


입출력 예

arr  return
[4,3,2,1] [4,3,2]
[10] [-1]



나의 풀이
-> 먼저 배열에 들어있는 값이 1개면 -1 리턴하기.

배열 안에 있는 숫자 내림차순으로 정렬한 뒤에 (integer로 바꿔서) 맨 마지막 값 뺴고 차례대로 리턴하기.

import java.util.Arrays;
import java.util.Collections;

class Solution {
    public int[] solution(int[] arr) {
        
        if (arr.length == 1) {
            return new int[]{-1};
        }
        
        Integer[] tempArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);
        Arrays.sort(tempArr,Collections.reverseOrder());

        return Arrays.copyOfRange(arr, 0, arr.length - 1);
    }
}

 

 

 

테스트케이스 2개만 통과하고 다 틀리기

ㅎ 뭐 어쩌라는거야 이건??왜죵?

 

 

 

 

나는 정렬을 먼저 한 후에 마지막것만 뺴고 리턴했던거라

최소값이 여러 개일 경우에 모두 제거하지 못하는 문제가 있던것

 

 

import java.util.Arrays;
import java.util.Collections;

class Solution {
    public int[] solution(int[] arr) {
        
        if (arr.length == 1) {
            return new int[]{-1};
        }
        
        int min = Arrays.stream(arr).min().getAsInt();
        
        return Arrays.stream(arr)
             .filter(n -> n != min) 
             .toArray();

    }
}

 

먼저 제일 작은 수 고르고

배열에서 그 값 제거하고 새로운 배열 반환하게 스트림 사용

 

반응형