Algorithm/Programmers(Java)

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

비망노트 2022. 12. 15. 22:23

문제 설명

정수를 저장한 배열, 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]

 

 

⭕ 풀이

class Solution {
    public int[] solution(int[] arr) {
        
        if(arr.length==1) {
            int[] result = {-1};
            return result;
        }
        
        int[] result = new int[arr.length-1];
        int minIdx = 0;
        for(int i=0;i<arr.length;i++) {
            if(arr[i]<arr[minIdx]) {
                minIdx = i;
            }
        }

        int j=0;
        for(int i=0;i<arr.length;i++) {
            if(minIdx==i) {
                continue;
            }else {
                result[j++] = arr[i];
            }
        }
        return result;
    }
}

 

✅ 흐름

 

1. 입력받은 int배열 arr의 길이가 1일경우 바로 result 배열을 -1로 초기화하여 반환한다.

 

2. 아닐경우 int배열의 길이를 입력받은 arr.length-1 로 설정한다.

 

3. 가장 작은 수의 위치를 기억하기위해 minIdx 를 선언하여 사용한다.

 

4. 가장 작은수의 위치를 알아내었고 다음 반복문에서 result배열에 arr배열의값을

   옮겨담으며 가장작은수의 위치일경우 건너뛰도록한다.

 

 

 

 

 

 

-출처

https://school.programmers.co.kr/learn/courses/30/lessons/12935