프로그래머스 연습문제 제일 작은 수 제거하기 자바 풀이
문제 정리
- 주어진 배열에서 가장 작은 수를 제거한 배열을 리턴하여라.
- 배열에 숫자가 하나밖에 없다면 -1을 담은 배열을 리턴하여라.
- 배열에 주어진 수는 모두 다르다
문제 풀이
배열을 오름차순이나 내림차순으로 정렬해서 제거하면 안됩니다.
주어진 원소 순서대로 출력해야 합니다.
- 가장 작은 수의 인덱스를 찾습니다.
- 그 인덱스의 수만 빼고 새로운 배열에 숫자를 모두 넣습니다. 그러면 원래 순서대로 들어가게 됩니다.
문제 풀이
class Solution {
public static void main(String[] args){
int[] arr = {4,3,2,1};
int[] arr2 = {10};
// debug
int[] ans = solution(arr);
for(int i=0; i<ans.length; i++)
System.out.print(ans[i] + " ");
System.out.println();
}
public static int[] solution(int[] arr) {
if(arr.length == 1){
int[] ans = {-1};
return ans;
}
int min = Integer.MAX_VALUE;
int idx = 0;
for(int i=0; i<arr.length; i++){
if(min > arr[i]){
idx = i;
min = arr[i];
}
}
int len = arr.length;
int[] ans = new int[len-1];
int i = 0;
int j = 0;
// 가장 작은 수의 인덱스인 idx의 수만 빼고 모두 넣는다
while(j < len-1){
if(idx != i){
ans[j] = arr[i];
j++;
}
i++;
}
return ans;
}
}