본문 바로가기

Coding Test/프로그래머스

22 Java - 제일 작은 수 제거하기

----- ArrayList -----

ArrayList<Integer> list = new ArrayList<>( ); 정의

list.add( ) : 리스트안에 객체 추가

list.contains( ) : 리스트 안에 어떤 객체가 있는지 확인할때 사용

list.indexOf( ) : 문자열에서 특정 단어가 있는지 찾고 있을 경우 위치 값 리턴

list.remove( ) : 리스트의 객체 삭제

list.get( ) : 리스트에서 어떤 객체를 가져오기

 

----- 길이 -----

length : 배열의 길이

length[ ] : 문자열의 길이

size( ) : 컬렉션 프레임워크(list, set, map, stack, queue) 타입의 길이

 

문제 설명

정수를 저장한 배열, 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]

 

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        
        int min = arr[0];
        
        //arr 길이가 1이라면 -1출력
        if(arr.length == 1) return new int[] {-1};
    
        //작은 수 제외하고 배열에 넣기
        //arr[0]과 arr[1]을 비교하고 arr[0]이 더 크다면 배열에 포함
        //작다면 제외
        
        //ArrayList
        ArrayList<Integer> list = new ArrayList<>();
            
        for(int i = 0; i < arr.length; i++){
            //add : 리스트 안에 객체 추가
            list.add(arr[i]);
            
            //min인 arr[0]이 arr[i] 보다 클때, min은 arr[i]
            if(min > arr[i])    min = arr[i];
        }

        //contains : 리스트 안에 어떤 객체가 있는지 확인할때 사용
        while(list.contains(min)){
            
            //indexOf : 문자열에서 특정 단어가 있는지 찾고 있을 경우 위치값 리턴
            int idx = list.indexOf(min);
            
            //remove : 리스트의 객체 삭제
            list.remove(idx);
        }
        
        //length : 배열의 길이
        //length[] : 문자열의 길이
        //size() : 컬렉션 프레임워크(list, set, map, Stack, Queue) 타입의 길이
        int[] answer = new int[list.size()];
        
        for(int i = 0; i< list.size(); i++)
            
            //get() : 리스트에서 어떤 객체를 가져오기
            answer[i] = list.get(i);
        
        return answer;
    }
}