📘문제 설명
정수를 저장한 배열, 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]
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 21 - 프로그래머스 기출 문제(JAVA) / 수박수박수박수박수박수? / Day 20 (0) | 2025.09.23 |
|---|---|
| [Java] 코딩 20 - 프로그래머스 기출 문제(JAVA) / 가운데 글자 가져오기 / Day 19 (0) | 2025.08.20 |
| [Java] 코딩 18 - 프로그래머스 기출 문제(JAVA) / 없는 숫자 더하기 / Day 17 (1) | 2025.07.25 |
| [Java] 코딩 17 - 프로그래머스 기출 문제(JAVA) / 핸드폰 번호 가리기 / Day 16 (0) | 2025.07.18 |
| [Java] 코딩 16 - 프로그래머스 기출 문제(JAVA) / 음양 더하기 / Day 15 (1) | 2025.07.16 |