CodingTest/프로그래머스(Programmers)

[프로그래머스,Level 1] 제일 작은 수 제거하기(JAVA 구현)

뜸부깅 2020. 12. 28. 19:20
반응형

- 첫 풀이 및 정답풀이

  간단하게 for문을 통해 해결할 수 있는 문제이지만, Collections.min(), Collections.remove(), Collections.indexOf() 등 Collections 클래스에서 제공하는 다양한 메서드들을 이용하면 더 간단하게 풀 수 있을 것 같다.

 

import java.util.ArrayList;

class Solution {
    // 1. 동적 크기 배열을 위한 ArrayList 반환
    public ArrayList<Integer> solution(int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        
        // 2. 배열 내 최솟값 저장 변수.
        int min = Integer.MAX_VALUE;
        
        // 3. 완전탐색을 통한 최솟값 저장.
        for(int i = 0;i<arr.length;i++){
            if(arr[i] < min) min = arr[i];
        }
        
        // 4. 최솟값인 경우를 제외하고 ArrayList의 원소로 삽입.
        for(int i = 0;i<arr.length;i++){
            if(arr[i] == min) continue;
            answer.add(arr[i]);
        }
        
        // 5. 삽입된 원소가 존재하지 않는다면, -1을 삽입.
        if(answer.isEmpty()) answer.add(-1) ;
        
        return answer;
    }
}