잠에서 덜깬채로 풀어서 처음에 내림차순으로 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;
}
'Java > 알고리즘' 카테고리의 다른 글
수박수박수 (1) | 2024.01.23 |
---|---|
내적, 가운데 글자 가져오기 (1) | 2024.01.22 |
핸드폰 번호 가리기 (0) | 2024.01.18 |
없는 숫자 더하기 (0) | 2024.01.17 |
나누어 떨어지는 숫자 배열(향상된 for문 꿀팁 idx++) (0) | 2024.01.16 |