본문 바로가기

Plo Algorithm

프로그래머스 Lv1 제일 작은 수 제거하기

제일 작은 수 제거하기

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] arr) {
        List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
        Arrays.sort(arr);
        list.remove(list.indexOf(arr[0]));
        if (list.size() <= 0) return new int[]{-1};
        return list.stream().mapToInt(i->i).toArray();
    }
}

- List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList()); -

이전 문제에서 정리했기에 이제는 알아볼 수 있다.

파라미터로 받은 arr을 ArrayList로 변환 후 list에 할당한다.

- Arrays.sort(arr) -

파라미터로 입력받은 arr을 오름차순으로 정렬해준다.

- list.remove(list.indexOf(arr[0])) -

list.indexOf(arr[0])

위에서 arr이 오름차순으로 정렬되었기 때문에

arr[0]는 배열의 가장 작은 값이다.

list의 가장 작은 값과 arr배열의 가장 작은 값은 동일하기에

list.indexOf(arr[0])가 실행되면

list배열의 가장 작은 값의 index가 반환되게 되고

list.remove()가 해당 index를 삭제하게 된다.

 

- if (list.size() <= 0) return new int[]{-1}; -

만약 list배열의 크기가 0보다 작거나 같으면

-1만이 값으로 있는 새로운 배열을 리턴한다.

- return list.stream().mapToInt(i->i).toArray(); -

IntegerType list를

stream.mapToint()함수를 사용해

int type으로 변환 후 다시 stream에서 toArray해준 후 반환

 


stream에 대한 이해도가 조금 증가했다.