Lee's Grow up

[자바/알고리즘] 프로그래머스 제일 작은 수 제거하기 본문

알고리즘/프로그래머스

[자바/알고리즘] 프로그래머스 제일 작은 수 제거하기

효기로그 2019. 11. 18. 08:35
반응형

문제 설명


정수를 저장한 배열, 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[] answer = {-1};    
          return answer;
      }

      int min = arr[0];
      for (int i = 1; i < arr.length; i++) {
            min = Math.min(min, arr[i]);
        }

      int[] answer = new int[arr.length-1];
      int index = 0;

      for (int i = 0; i < arr.length; i++) {
            if(arr[i] == min) {
                continue;
            }
            answer[index++] = arr[i];
        }
      return answer;
  }
}

문제에서 리턴하는 배열이 빈 배열인 경우 -1을 리턴 즉, 길이가 1이하일 때 빈배열이라고 가정했기 때문에 처음에 if(arr.length <= 1 )이라는 조건을 사용하여 값을 리턴해주었고, 아닐 경우 전체 반복문을 통해 최소 값을 Math.min(int,int)메소드를 통해 최소 값을 구한 후 새로운 배열에 값을 저장하고 리턴해줍니다.

반응형
Comments