알고리즘/프로그래머스

제일 작은 수 제거하기(JAVA)

mrban 2022. 1. 19. 16:25

1. 문제

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수를 만드시오. 단, 리턴하려는 배열이 빈 배열이면 배열에 -1을 채워 리턴한다. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴한다.

 

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

 

3. 정답
class Solution {
    public int[] solution(int[] arr) {
        int result;
        int[] answer;
        int k = 0;
        int j = 0;
        
        if (arr.length == 1) {
            answer = new int[1];
            answer[0] = -1; 
            return answer;
        }
        else {
            result = arr[0];
            answer = new int[arr.length - 1];
            for (int i = 1; i < arr.length; i++) {
                if (result > arr[i]) {
                    result = arr[i];
                }
            }
            while (j < arr.length - 1) {
                if (arr[k] == result) {
                    k++;
                    continue;
                }
                answer[j] = arr[k];
                k++;
                j++;
            }
            return answer;
        }
        
    }
}
 

4. 설명

4-1. arr의 길이부터 재서 만약 길이가 1이라면 더 볼것도 없이 -1만 들어있는 배열을 return해주고 끝낸다.

4-2. 위와 같은 경우가 아니라면 result에 일단 arr[0]값을 부여한다.

4-3. for문을 돌면서 arr배열에서 arr[0]보다 작은 값이 있다면 그 값을 result에 넣어준다. 즉, for문을 다 돌고나면 가장 작은 값이 result에 들어있게 된다.

4-4. while문을 통해 arr요소 값들을 하나씩 answer값에 넣는다. 단, 만약 arr요소중에서 result와 같은 값이 있다면(가장 작은 값이라면) 그 부분은 넣지말고 넘어간 상태로 다음 요소들부터 넣어준다.

4-5. answer값을 return한다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

하샤드 수(JAVA)  (0) 2022.01.19
콜라츠 추측(JAVA)  (0) 2022.01.19
정수 제곱근 판별(JAVA)  (0) 2022.01.19
정수 내림차순으로 배치하기(JAVA)  (0) 2022.01.19
자연수 뒤집어 배열로 만들기(JAVA)  (0) 2022.01.18