Java/알고리즘
제일 작은 수 제거하기
티코딩
2024. 1. 19. 11:01
잠에서 덜깬채로 풀어서 처음에 내림차순으로 sort해주고 가장 작은거 빼주면 되겠구나, 했는데 5분뒤에 어라? 그냥 작은수만 제거해주는거였구나 싶었다. 테스트케이스만 생각했다가 큰코다칠뻔했다. 생각보다 오래걸렸다.
public static int[] solution(int[] arr) {
//arr에서 가장 작은 수 min을 빼므로 answer의 길이는 arr길이-1
int[] answer = new int[arr.length-1];
//빈배열이 정답으로 들어올경우 리턴하는 배열 real
int[] real = {-1};
//가장 작은수가 맨뒤일경우도있으니 맨마지막 원소를 min으로 가정(아니어도 괜찮음)
int min = arr[arr.length-1];
//두번째 반복문에서
int minIndex = 0;
// 가장 작은 수 구하기
for(int i = 0; i < arr.length; i++){
if(min >= arr[i]){
min = arr[i];
minIndex = i;
}
}
//min 빼주기
for(int j = 0, k = 0; j < answer.length; j++, k++){
//만약 k가 가장작은원소의 인덱스일경우, 다음 인덱스로 넘어가고 k++해줌
if(k == minIndex) {
answer[j] = arr[k+1];
k++;
}else {
answer[j] = arr[k];
}
}
//answer이 빈배열일 경우 real 반환
if(answer.length == 0){
return real;
}
return answer;
}