알고리즘 (JAVA)/프로그래머스 알고리즘

[프로그래머스] level1. 제일 작은 수 제거하기 - 개발자 배찌

개발자 배찌 2022. 5. 10. 13:08
728x90

 

level1 인데... 이렇게 한참이나 생각할 줄이야...!!

끝내 완성하지 못하고 구글링을 한 나 자신...ㅎ 반성하며 여러가지 방법으로 풀어보기로 했다.

 

풀이과정 -1

입력된 arr 배열에서 가장 작은 수를 뽑아내고, (Math.min 활용)

answer 배열에 그 작은수를 제외한 나머지 값을 넣어주었다. (for문 활용)

arr배열에 값이 1개이면 answer={-1}을 넣어주었다. (if문 활용)

 

나는 Math.min 을 활용하지 못했고, for문을 돌리면서 min을 추려냈는데 너무 시간이 오래걸렸다. 

배열의 최솟값을 뽑아내는 Math.min 기억하기!!!!!✅✅✅

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        
        if(arr.length == 1){
            int[] answer = {-1};
            return answer;
        } else {
            int min = arr[0]; //최초 비교될 값을 넣어주어야 함.
            int count = 0;
            
            int[] answer = new int[arr.length-1];
            for(int i=0; i<arr.length; i++){
                min = Math.min(min, arr[i]);
            }
            
            for(int i = 0; i < arr.length; i++){
                if(arr[i] != min){
                    answer[count] = arr[i];
                    count++;
                }
            }
            return answer;
        }
    }
}

 

풀이과정 -2

가장 작은 수를 뽑아내기 위해 "정렬" 사용!

여기서 헷갈렸던 부분

배열의 오름차순 정렬은 Arrays.sort(배열);

배열의 내림차순 정렬은 Arrays.sort(배열, Collections.reverseOrder());

 

ArrayList 오름차순 정렬은 Collections.sort(배열);

ArrayList 오름차순 정렬은 Collections.sort(배열, Collections.reverseOrder());

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        
        if(arr.length == 1){
            int[] answer = {-1};
            return answer;
        }
        
        int[] answer = new int[arr.length-1];
        int count = 0;
        ​
        int[] temp = arr.clone();
        Arrays.sort(temp);
        int min = temp[0];
        
        for(int i=0; i<arr.length; i++){
            if(min != arr[i]){
                answer[count] = arr[i];
                count++;
            }
        }
        
        return answer;
    }
}