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

JinjuLog·2021년 2월 2일
0

알고리즘

목록 보기
2/12
post-thumbnail

🚩 문제 설명

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

📝 해결방법

먼저 주어진 arr 배열에서 최솟값 min을 구하고, 최솟값 개수를 뺀 길이를 answer길이로 지정한다. 여기서 answer 길이가 가변적인 길이가 되기 때문에 ArrayList를 선언하여 나중에 answer에 넣어준다.

📝 배운것

ArrayList 선언

👩🏻‍💻 내코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        int min = arr[0];
        for(int i=1; i<arr.length; i++){
            if(min > arr[i]){
                min = arr[i];
            }
        }

        ArrayList<Integer> list = new ArrayList<>();

        for(int i=0; i<arr.length; i++){
            if(min != arr[i]){
                list.add(arr[i]);
            }
        }

        int[] answer = new int[list.size()];

        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }

        if(answer.length == 0){
            answer = new int[1];
            answer[0] = -1;
            return answer;
        }else{
            return answer;
        }
    }
}

📝 개선사항

빈 배열일 경우 -1을 채워 리턴을 앞쪽에 작성해주기

if(answer.length == 0){
            answer = new int[1];
            answer[0] = -1;
            return answer;
        }else{
            return answer;
        }

위 코드 대신에

if(arr.length == 1){
	int[] answer = {-1};
    return answer;
    }

출처 : programmers 제일작은 수 제거하기

0개의 댓글