728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12935
📌 문제 개요
정수를 저장한 배열에서 가장 작은 수를 제거한 배열을 반환하는 문제이다.
단, 배열의 길이가 1이라면 제거 후 빈 배열이 되므로 [-1]을 반환해야 한다.
📌 접근 방법
이 문제는 크게 두 단계로 해결할 수 있다.
- 배열의 최솟값 찾기
- 최솟값을 제외한 새로운 배열 생성
Java Stream API를 사용하면 코드가 매우 간결해진다.
min(): 배열 최솟값 탐색filter(): 특정 값 제외toArray(): int 배열 변환
📌 핵심 아이디어
최솟값을 먼저 구한 뒤,
int min = Arrays.stream(arr)
.min()
.getAsInt();
filter()를 사용해 최솟값이 아닌 값만 남긴다.
int[] answer = Arrays.stream(arr)
.filter(num -> num != min)
.toArray();
배열 길이가 1인 경우는 별도로 처리해야 한다.
if(arr.length == 1){
return new int[]{-1};
}
📌 전체 코드
import java.io.IOException;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
// 배열 길이가 1이면 [-1] 반환
if(arr.length == 1){
return new int[]{-1};
}
// 최솟값 찾기
int min = Arrays.stream(arr)
.min()
.getAsInt();
// 최솟값 제외한 새 배열 생성
int[] answer = Arrays.stream(arr)
.filter(num -> num != min)
.toArray();
return answer;
}
}
📄 정리
이 문제는 배열 탐색과 조건 필터링의 기본을 익히기 좋은 문제였다.
특히 Stream API를 활용하면 반복문 없이도 배열 데이터를 직관적으로 처리할 수 있다는 점이 핵심이다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 가운데 글자 가져오기 JAVA 풀이 (문자열, substring) (0) | 2026.05.12 |
|---|---|
| 프로그래머스 약수의 개수와 덧셈 (JAVA) (0) | 2026.05.12 |
| 프로그래머스 달리기 경주 JAVA 풀이 (해시맵, 시뮬레이션) (0) | 2026.05.07 |
| 프로그래머스 나누어 떨어지는 숫자 배열 JAVA 풀이 (정렬, Stream) (0) | 2026.05.06 |
| 프로그래머스 순위 JAVA 풀이 (그래프, 플로이드워셜, 순위판별) (0) | 2026.05.05 |