https://programmers.co.kr/learn/courses/30/lessons/12935
List 사용
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1) {
int [] answer = {-1};
return answer;
}
int[] answer = new int[arr.length - 1];
ArrayList<Integer> list = new ArrayList<>();
for (int i : arr)
list.add(i);
int min = Collections.min(list);
int index = list.indexOf(min);
list.remove(index);
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
ArrayList<Integer> list = new ArrayList<>();: ArrayList 생성
Collections.min(리스트 변수) : 리스트의 최소값 찾아줌
list.indexOf(값): list에서 값의 인덱스 찾아줌
list.get(인덱스) : list는 list[i]를 사용할 수 없으므로 get() 메서드 사용
stream 사용
(속도는 느림)
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1)
return new int[]{-1};
int min = Arrays.stream(arr).min().getAsInt();
return Arrays.stream(arr).filter(i -> i != min).toArray();
}
}
stream.toArray() : stream을 int 배열로 변환할 때
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1)
return new int[]{-1};
List<Integer> list = Arrays.stream(arr).boxed()
.collect(Collectors.toList());
Arrays.sort(arr);
list.remove(list.indexOf(arr[0]));
return list.stream().mapToInt(i->i).toArray();
}
}
int[] -> List
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
List -> int[]
list.stream().mapToInt(i->i).toArray();
stream.mapToInt() : 스트림을 IntStream으로 변환해주는 메서드다. IntStream을 제외한 모든 스트림에서 동일하게 제공하는 메서드다.