본문 바로가기
코딩테스트/Java

[Level1] 제일 작은 수 제거하기 답안 및 풀이

by SRin23 2021. 6. 15.

◇ 문제 설명

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

 

◇ 제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

 

◇ 입출력 예시

arr return
[4, 3, 2, 1] [4, 3, 2]
[10] [-1]

 

◇ 초기 내용

※ [출처] 프로그래머스-코딩테스트 연습-문제명

※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        return answer;
    }
}

 


◇ 답안

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        if(arr.length == 1){
            answer = new int[1];
            answer[0] = -1;
            return answer;
        }
        
        answer = new int[arr.length-1];
        int min = arr[0];
        for(int i = 0; i<arr.length; i++){
            if(arr[i]<min){
                min = arr[i];
            }
        }
        
        int r = 0;
        for(int i = 0; i<arr.length; i++){
            if(arr[i]!=min){
                answer[r] = arr[i];
                r++;
            }
        }
        return answer;
    }
}

 

◇ 답안 풀이

(※ 실행 흐름 순으로 해석됩니다.)

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};

 

     //넘어온 배열의 길이가 1인경우, min삭제시 배열이 NULL이 되므로 문제의 조건과 같이 처리 후 종료
        if(arr.length == 1){
            answer = new int[1];
            answer[0] = -1;
            return answer;
        }
        

     //answer은 arr의길이 -1(최소값을 없애므로)
        answer = new int[arr.length-1];

 

     //min의 초기값 arr[0]
        int min = arr[0];

 

     //arr배열 중 가장 작은 값 검색
        for(int i = 0; i<arr.length; i++){
            if(arr[i]<min){
                min = arr[i];
            }
        }
        

     //answer에 arr을 대입하는데 min값을 빼고 대입한다.
        int r = 0;
        for(int i = 0; i<arr.length; i++){
            if(arr[i]!=min){
                answer[r] = arr[i];
                r++;
            }
        }
        return answer;
    }
}

 

◇ 실행결과

제일 작은 수 제거하기 실행결과

 

◇ 출처

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

댓글