
public static int[] solution(int[] arr) {
// 원소가 하나뿐이라면 -1 리턴
if (arr.length == 1) {
return new int[]{-1};
}
// 가장 작은 값 찾기
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
// min이 아닌 값만 새로운 리스트에 담기
List<Integer> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (arr[i] != min) {
list.add(arr[i]);
}
}
// 리스트를 배열로 변환
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] += list.get(i);
}
return answer;
}
public int[] solution(int[] arr) {
if (arr.length == 1) return new int[]{-1};
// 최소값 찾기
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
// 새로운 배열 생성 (길이 = arr.length - 1)
int[] answer = new int[arr.length - 1];
int idx = 0;
// 최소값을 제외한 나머지를 복사
for (int i = 0; i < arr.length; i++) {
if (arr[i] != min) {
answer[idx++] = arr[i];
}
}
return answer;
}
배열만 사용해서 성능은 빠름
불필요한 컬렉션 사용 안 함 (메모리도 효율적)
idx로 직접 answer[]에 순서대로 넣기 때문에 안전하고 명확함
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(n -> n != min)
.toArray();
}