정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이
[4,3,2,1]
인 경우는[4,3,2]
를 리턴 하고,[10]
면[-1]
을 리턴 합니다.
arr | return |
---|---|
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
Vector<Integer> v = new Vector<Integer>();
for(int i = 0; i < arr.length; i++) {
v.add(arr[i]);
}
int min = v.get(0);
for(int i = 1; i < v.size(); i++) {
if(v.get(i) <= min) {
min = v.get(i);
}
}
for(int i = 0; i < v.size(); i++) {
if(v.get(i).equals(min)) {
v.remove(i);
}
}
if(v.size() == 0 ) {
answer = new int[1];
answer[0] = -1;
}else {
answer = new int[v.size()];
for(int i = 0; i < v.size(); i++) {
answer[i] = v.get(i);
}
}
return answer;
}
}
일단 sort
를 써봤는데 그러면 정렬된 상태로 answer
이 출력되기 때문에 안된다. 그래서 벡터 v
를 선언하고 거기에 arr
의 원소들을 다 담아주었다. 그 상태에서 최솟값 min
을 찾아준 후에 최솟값과 일치하는 벡터의 원소를 제거하고 if
문으로 벡터의 크기가 0이면 answer
에 -1만 담아준다. 아니라면 answer
에 벡터의 모든 원소들을 담아준 후 리턴한다.
다른 사람들 풀이를 찾아보면 더 쉽고 간결하게 푸는 법이 나올 것 같은데 괜히 오기가 생겨서 찾아보기 싫다! 내가 다시 풀어보고 수정할거다! ~.~