🟨 내 풀이:
1) 길이가 1인 경우를 먼저 처리한 후에
2) for문으로 input으로 주어진 배열에서 가장 작은 ele와 ele의 index를 찾기
3) 그 ele index로 0-index index-배열끝 두 배열을 만든다.
4) 두 배열을 연결해서 가장 작은 ele을 뺀 새로운 배열을 만든다.
5) 길이가 1인 경우를 먼저 처리한 후에 가장 작은 값을 구하고
import java.io.*;
import java.util.*;
public static int[] solution(int[] arr) {
int[] answer = new int [arr.length];
int min = 999999;
int mindex = 0;
if(arr.length==1){
answer[0] = -1;
}else{
for(int a= 0; a < arr.length; a++){
if(arr[a]<min){ min=arr[a];mindex=a;}
}
int[] arr1 = Arrays.copyOfRange(arr, 0, mindex);
int[] arr2 = Arrays.copyOfRange(arr, mindex, arr.length-1);
answer=Arrays.copyOf(answer,answer.length-1);
System.arraycopy(arr1, 0, answer, 0, arr1.length);
System.arraycopy(arr2, 0, answer, arr1.length, arr2.length);
}
return answer;
}
양수는 통과하는데 음수를 넣으면 문제가 생긴다.
🟩 해답:
1) 길이가 1인 경우를 먼저 처리한 후에
2) 가장 작은 값을 구하고
3) answer 배열에 minindex를 뺀 모든 값을 copy한다.
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1) return new int[]{-1};
int minidx = 0;
for(int i=0; i<arr.length; i++) {
if(arr[minidx] > arr[i]) {
minidx = i;
}
}
int[] answer = new int[arr.length-1];
int cnt = 0;
for(int i=0; i<arr.length; i++) {
if(i == minidx) continue;
answer[cnt++] = arr[i];
}
return answer;
}
}
**비슷한거 같지만 훨씬 깔끔한 코드인것 같다.