
1.내가 푼 코드
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public List solution(int[] arr) {
List<Integer> answer=new ArrayList<Integer>();
if(arr.length>1){
int a=Arrays.stream(arr).min().getAsInt();
answer= Arrays.stream(arr).filter(i-> i!=a).boxed().collect(Collectors.toList());}
else answer.add(-1);
return answer;
}
}```
2.다른 분 코드-(1)
import java.util.Arrays;
import java.util.stream.Stream;
import java.util.List;
import java.util.ArrayList;
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();
}
}
다른 분 코드-(2)
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int minIndex=0;
for(int i=0;i<arr.length;i++){
if(arr[minIndex]>arr[i]){
minIndex = i;
}
}
for(int i=minIndex+1;i<arr.length;i++){
arr[i-1] = arr[i];
}
for(int i=0;i<answer.length;i++){
answer[i] = arr[i];
}
return answer;
}
}
- Math.min(a,b)/Math.max(a,b): 두 숫자 중 더 작은 값, 더 큰 값을 구한다.
- Integer.MIN_VALUE/Integer.MAX_VALUE: integer로 표현할 수 있는 정수 중 가장 작은 값(=-2147483648)/가장 큰 값(=2147483647)을 반환한다.
- 🤔 배열은 특정값을 제거하는 함수가 없다-> 리스트는 Arrays.remove(index i)로 제거 가능.
Stream
- 배열은 Arrays.stream(array) 로 시작.
- max(),min()은 최종값을 반환
- filter(i-> i==0) 각 요소가 0인 인덱스만 골라 반환
- collect(Collectors.toList()): 결과값들을 리스트로 다시 재구성
- map(item-> item.getName()) : 각 객체의 함수의 리턴값을 반환
- allMatch,anyMatch,noneMatch(): 전부 맞으면/ 하나라도 맞으면/ 하나도 맞지 않으면 true/ false 반환
- distinct(): 리스트에서 중복 요소를 제거