본문 바로가기
Java/알고리즘

제일 작은 수 제거하기

by 티코딩 2024. 1. 19.

잠에서 덜깬채로 풀어서 처음에 내림차순으로 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