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

최준호·2021년 7월 23일
0

algorithm

목록 보기
30/39

문제

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

제한사항

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

입출력 예

풀이

import java.util.Arrays;

public class SmallerNumberSearch {
    public static void main(String[] args) {
        SmallerNumberSearch sns = new SmallerNumberSearch();
        int[] arr = {5, 1, 2, 6, 8};
        int[] solution = sns.solution(arr);
        for (int i : solution) {
            System.out.println("i = " + i);
        }
    }
    public int[] solution(int[] arr) {
        int leng = arr.length;
        if(leng == 1) return new int[] {-1};

        int[] cloneArr = arr.clone();
        Arrays.sort(cloneArr);
        int find = Arrays.binarySearch(cloneArr, cloneArr[0]);
        int key = cloneArr[find];

        int[] answer = new int[leng-1];
        int idx = 1;
        for(int i : arr){
            if(i==key) continue;
            answer[(idx++)-1] = i;
        }

        return answer;
    }
}

binarySearch를 사용해보고 싶어서 풀어본 문제

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글