본문으로 바로가기

📘문제 설명

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

https://school.programmers.co.kr/learn/courses/30/lessons/12935

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 제한조건

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


💡 개념 설명

1️⃣ 단계: 예외 상황 먼저 처리하기

가장 먼저, 배열에 숫자가 딱 하나만 들어있는지 확인합니다. 만약 그렇다면, 가장 작은 수를 빼면 배열이 비어버리므로, 규칙에 따라 -1이 담긴 배열을 즉시 반환하고 모든 과정을 종료합니다.

2️⃣ 단계: 가장 작은 수 찾아내기

배열을 처음부터 끝까지 한번 쭉 훑어보면서 가장 작은 숫자가 무엇인지 찾아서 기억해 둡니다.

3️⃣ 단계: 새로운 결과 배열 준비하기

원래 배열보다 크기가 정확히 1 작은, 비어있는 새 배열을 만듭니다. 이 배열이 우리가 최종적으로 반환할 정답 배열이 됩니다.

4️⃣ 단계: '가장 작은 수'만 빼고 복사하기

원래 배열을 다시 한번 처음부터 살펴보면서, 각 숫자가 2단계에서 찾은 '가장 작은 수'와 같은지 비교합니다. 만약 같지 않다면, 그 숫자를 3단계에서 준비한 새 배열에 순서대로 옮겨 담습니다. 가장 작은 수는 건너뛰는 셈이죠.

5️⃣ 단계: 최종 결과 반환

복사가 모두 끝나면, 가장 작은 수가 제외된 새로운 배열이 완성됩니다. 이 배열을 반환합니다


📎 입출력 예시


📎 코드

import java.util.Arrays;

class Solution {
    /**
     * 정수 배열 arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수.
     * 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴.
     * @param arr 정수 배열
     * @return 가장 작은 수를 제거한 배열
     */
    public int[] solution(int[] arr) {
        // 1. 배열의 길이가 1이하인 경우, -1을 담은 배열을 바로 반환합니다.
        if (arr.length <= 1) {
            return new int[]{-1};
        }

        // 2. 가장 작은 수를 찾습니다.
        int min = arr[0]; // 우선 첫 번째 값을 가장 작다고 가정합니다.
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i]; // 더 작은 값을 찾으면 교체합니다.
            }
        }

        // 3. 가장 작은 수를 제외한 새 배열을 만듭니다.
        // 결과 배열의 크기는 원래 배열보다 1 작습니다.
        int[] answer = new int[arr.length - 1];
        int index = 0; // 새 배열에 값을 넣기 위한 인덱스

        // 4. 원래 배열을 순회하며 가장 작은 수가 아니면 새 배열에 복사합니다.
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != min) {
                answer[index] = arr[i];
                index++;
            }
        }

        return answer;
    }

    /**
     * 코드를 테스트하기 위한 main 함수
     */
    public static void main(String[] args) {
        Solution sol = new Solution();

        // --- 📝 테스트 케이스 1 ---
        int[] arr1 = {4, 3, 2, 1};
        int[] result1 = sol.solution(arr1);
        System.out.println("테스트 1 결과: " + Arrays.toString(result1)); // 예상: [4, 3, 2]

        // --- 📝 테스트 케이스 2 ---
        int[] arr2 = {10};
        int[] result2 = sol.solution(arr2);
        System.out.println("테스트 2 결과: " + Arrays.toString(result2)); // 예상: [-1]
    }
}

 


📎 결과