class Solution {
public int[] solution(int[] arr) {
/*
리턴하려는 배열이 빈 배열인 경우 -> 배열 내부에 원소가 1개만 있다면
가장 작은 수를 제거했을 경우 갯수가 0개다. 빈 배열이 된다.
arr은 길이가 1이상인 배열
*/
if(arr.length == 1) {
return new int[] {-1};
}
int min = Integer.MAX_VALUE; // int 중에서 가장 큰 값
for(int num : arr) {
//System.out.println(num);
System.out.println(min + " " + num);
if(min > num) { //직전까지의 최소값이 num보다 크다면
min = num; //num을 min에 할당
}
}
System.out.println("최소값 : " + min);
int[] newArr = new int[arr.length - 1]; //가장 작은 수 1개를 뺀 배열
//다시 한 번
int index=0; // 새로운 배열에 넣을 인덱스
for(int a : arr) { //min이 아닌 배열만
System.out.print(a);
if(a==min) {
//System.out.println(a + "는 최소값이다!");
//최소값일 경우에는 index++이 작동하지 않아서 해당 인덱스는 다음에 다시 사용함
} else {
newArr[index++] = a;
}
}
return newArr;
}
}
[리스트 풀이]
import java.util.*; // 자바에서 유용한 기능들...
class Solution {
// 2. ArrayList
public int[] solution(int[] arr) {
if (arr.length == 1) {
return new int[] {-1};
}
// 가장 작은 수 비교해주기 위해서 integer 가장 큰 값
int min = Integer.MAX_VALUE;
// 배열 -> 리스트로 변환
// 배열이랑 비슷한데 add, remove같은 걸로 삭제/추가가 가능한 자료형
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
// 리스트에다가 추가를 할 건데...
list.add(arr[i]); // 리스트에다가 기존의 배열 원소를 넣고...
// add로 원소를 맨 끝에 '추가'
if (min > arr[i]) {
min = arr[i];
}
}
// 변환 코드만 좀 들어간 것.
// 리스트에서 특정한 값(value)의 인덱스를 찾는 메서드
// -> min값으로 index를 찾고요.
// System.out.println(list.indexOf(min)); // 최소값의 인덱스.
list.remove(list.indexOf(min)); // 인덱스를 통해서 값을 '제거'
int[] newArr = new int[list.size()]; // size를 통해서 길이(length)
for (int i = 0; i < newArr.length; i++) {
newArr[i] = list.get(i); // list.get(인덱스)
}
return newArr;
}
}