Programmers/Lv.1

[프로그래머스][Lv.1][Java] 제일 작은 수 제거하기

dbssk 2023. 4. 28. 01:38

코딩테스트 연습 - 제일 작은 수 제거하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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

제한 조건
  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
풀이
  • System.arraycopy(원본 배열, 원본 배열의 시작 index, 복사될 배열, 복사된 배열의 시작 index, 복사할 배열의 길이) 를 사용하여 최솟값이 있는 index를 제외하고 복사하였다.
class Solution {
    public int[] solution(int[] arr) {
        if (arr.length == 1) {
            arr[0] = -1;
            return arr;
        }
        
        int[] answer = new int[arr.length - 1];
        int index = 0;
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] <= min) {
                min = arr[i];
                index = i;
            } 
        }
        
        System.arraycopy(arr, 0, answer, 0, index);
        System.arraycopy(arr, index + 1, answer, index, arr.length - index - 1);
        
        return answer;
    }
}