문제 설명
정수를 저장한 배열, 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] |
나의 풀이
-> 먼저 배열에 들어있는 값이 1개면 -1 리턴하기.
배열 안에 있는 숫자 내림차순으로 정렬한 뒤에 (integer로 바꿔서) 맨 마지막 값 뺴고 차례대로 리턴하기.
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1) {
return new int[]{-1};
}
Integer[] tempArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);
Arrays.sort(tempArr,Collections.reverseOrder());
return Arrays.copyOfRange(arr, 0, arr.length - 1);
}
}


테스트케이스 2개만 통과하고 다 틀리기
ㅎ 뭐 어쩌라는거야 이건??왜죵?
나는 정렬을 먼저 한 후에 마지막것만 뺴고 리턴했던거라
최소값이 여러 개일 경우에 모두 제거하지 못하는 문제가 있던것
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1) {
return new int[]{-1};
}
int min = Arrays.stream(arr).min().getAsInt();
return Arrays.stream(arr)
.filter(n -> n != min)
.toArray();
}
}
먼저 제일 작은 수 고르고
배열에서 그 값 제거하고 새로운 배열 반환하게 스트림 사용

반응형
'Chapter02 > 코딩테스트' 카테고리의 다른 글
[코딩테스트] 같은 숫자는 싫어 (1) | 2025.04.03 |
---|---|
[ 코딩테스트 ] 가운데 글자 가져오기 (0) | 2025.03.22 |
[ 코딩테스트 ] 콜라츠 추측 (0) | 2025.03.17 |
[ 코딩테스트 ] 프로그래머스 나누어 떨어지는 숫자 배열 (0) | 2025.03.15 |
[ 코딩테스트 ] 프로그래머스 월간 코드 챌린지 시즌2 음양더하기 (0) | 2025.03.13 |