JAVA/Algorithm

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

nang. 2020. 12. 2. 22:22
반응형
SMALL

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

 

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

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

programmers.co.kr

 

  • 최소값 찾는 알고리즘

 

class Solution {
    public int[] solution(int[] arr) {
        
        int size = arr.length;
        int[] answer = new int[size-1];
        
        if(size == 1) {
            arr[0] = -1;
            return arr;
        } else {
            int min = Integer.MAX_VALUE;
            int minIdx = 0;
            
            for(int i = 0; i < size; i++) { // 최소값 찾아주기
                if(arr[i] < min) {
                    min = arr[i];
                    minIdx = i;
                }
            }
            
            int index = 0;
            
            for(int i = 0; i < size; i++) {
                if(i == minIdx) { // 최소값의 인덱스이면 빼고
                    continue;
                } else { // 나머지를 리턴할 배열에 넣어주기
                    answer[index] = arr[i]; 
                    index++;
                }
            }
        }

        return answer;
    }
}

 

 

 

  • 다른 풀이
class Solution {
  public int[] solution(int[] arr) {
    int[] answer = {};

    if (arr.length == 1) {
      answer = new int[]{-1};
    } else {
      List<Integer> list = new ArrayList<>();
      for (int a : arr)
        list.add(a);
      list.remove(Collections.min(list));
      answer = new int[arr.length - 1];
      for (int i = 0; i < list.size(); i++)
        answer[i] = list.get(i);
    }
    return answer;
  }
}
반응형
LIST