Level. 1
문제
풀이
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int minIdx=0;
for(int i=1; i<arr.length ;i++){
if(arr[minIdx]>arr[i]) minIdx = i;
}
for(int i=0;i<minIdx;i++){
answer[i] = arr[i];
}
for(int i=minIdx+1 ;i<arr.length;i++){
answer[i-1] = arr[i];
}
return answer;
}
}
해결방법
- 배열의 크기가 1인 경우, 가장 작은 수를 제거하면 빈 배열이 되기 때문에 -1을 넣은 배열을 리턴한다.
- 주어진 배열보다 크기가 1 작은 정답배열을 만든다.
- 반복문을 돌며 가장 작은 수의 index를 구한다.
- 반복문을 돌며 해당 정답배열에 해당 index값만 제외하고 값을 넣는다.
다른 사람 풀이
import java.util.Arrays;
import java.util.stream.Stream;
import java.util.List;
import java.util.ArrayList;
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(i -> i != min).toArray();
}
}
Stream의 min()과 filter()를 사용해 짧은 줄로 정답을 얻을 수 있었다.
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 약수의 합 (0) | 2023.07.02 |
---|---|
[프로그래머스] 자연수 뒤집어 배열로 만들기 / valueOf,() toString() (0) | 2023.06.25 |
[프로그래머스] 문자열 내 p와 y의 개수 / Stream , chars() , filter() (0) | 2023.05.06 |
[프로그래머스] 삼총사 / DFS (0) | 2023.05.06 |
[프로그래머스] 시저암호 / isLowerCase (0) | 2023.04.29 |