새소식

알고리즘 문제풀이/프로그래머스

[최소값 찾기] level1 프로그래머스 제일 작은 수 제거하기 자바 풀이

  • -

프로그래머스 연습문제 제일 작은 수 제거하기 자바 풀이

문제 정리

  1. 주어진 배열에서 가장 작은 수를 제거한 배열을 리턴하여라.
  2. 배열에 숫자가 하나밖에 없다면 -1을 담은 배열을 리턴하여라.
  3. 배열에 주어진 수는 모두 다르다


문제 풀이

배열을 오름차순이나 내림차순으로 정렬해서 제거하면 안됩니다.
주어진 원소 순서대로 출력해야 합니다.

  1. 가장 작은 수의 인덱스를 찾습니다.
  2. 그 인덱스의 수만 빼고 새로운 배열에 숫자를 모두 넣습니다. 그러면 원래 순서대로 들어가게 됩니다.


문제 풀이

class Solution {
    public static void main(String[] args){
        int[] arr = {4,3,2,1};
        int[] arr2 = {10};

        // debug
        int[] ans = solution(arr);
        for(int i=0; i<ans.length; i++)
            System.out.print(ans[i] + " ");
        System.out.println();
    }

    public static int[] solution(int[] arr) {
        if(arr.length == 1){
            int[] ans = {-1};
            return ans;
        }

        int min = Integer.MAX_VALUE;
        int idx = 0;

        for(int i=0; i<arr.length; i++){
            if(min > arr[i]){
                idx = i;
                min = arr[i];
            }
        }

        int len = arr.length;
        int[] ans = new int[len-1];
        int i = 0;
        int j = 0;

        // 가장 작은 수의 인덱스인 idx의 수만 빼고 모두 넣는다
        while(j < len-1){
            if(idx != i){
                ans[j] = arr[i];
                j++;
            }

            i++;
        }
        return ans;
    }
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.