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

 

코딩테스트 연습 - 제일 작은 수 제거하기

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

programmers.co.kr

 

 

문제 분석

- 배열(temp)를 활용하여 입력된 배열을 복사하고 정렬을 통해 가장 작은 수를 [0]번 인덱스에 위치시킨다.

- 만약 가장 작은 수를 제거한 배열의 길이가 0이라면 정답(answer)배열에 [0]번 인덱스에 -1을 위치시킨다.

- 가장 작은 수를 제거한 배열의 길이가 0보다 크다면 for문을 통해 가장 작은 수일 경우 continue를 통해 넘어가고, 그 외의 경우 정답(answer)배열에 추가한다.

 

 

문제 풀이

1. 정답 배열(answer)은 입력된 배열(arr)보다 하나 작은 크기로 생성한다.

2. 가장 작은 수를 찾기 위해 배열(temp)에 입력된 배열(arr)를 복사한다.

3. 가장 작은 수를 찾기위해 배열(temp)를 Arrays의 sort를 사용하여 정렬한다.

4. 만약 가장 작은 수를 제거한 배열의 길이가 0이라면 -1을 입력하여 출력한다.

5. 만약 가장 작은 수를 제거한 배열의 길이가 0보다 크다면 for문을 통해 정답 배열(answer)에 입력받은 배열(arr)을 차례대로 넣어준다. (이 때, 가장 작은 값이 나왔을 경우 continue를 활용하여 다음 값으로 넘어간다)

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = new int[arr.length-1];
        int[] temp = Arrays.copyOf(arr, arr.length);
        
        Arrays.sort(temp);
        
        if(arr.length==1){
            answer = new int[1];
            answer[0] = -1;
        }else{
            for(int i=0,j=0;i<arr.length;i++){
                if(arr[i]==temp[0]){
                    continue;
                }
                answer[j] = arr[i];
                j++;
            }
        }
        
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm