문제 출처 - Programmers
문제는 여기
[풀이]
1. clone을 사용해 입력받은 배열의 복사본을 만들어준다.
2. 배열의 길이가 1이라면 빈 배열이 될 것이므로 -1을 담고 바로 리턴해준다.
3. 1개의 숫자를 제거한 배열이 될 것이므로 사이즈를 입력받은 배열의 길이 -1로 만들어준다.
4. 복사한 배열을 오름차순으로 정렬한다.
5. 오름차순으로 정렬한 배열의 0번과 같은 숫자를 제외하고 answer에 담아준다.
6. 모든 수를 다 담으면 결과를 출력한다.
[접근]
1. 오름차순으로 정렬해서 가장 작은 수를 제거하면 되겠다고 생각하였다.
2. 그냥 오름차순으로 정렬을 하면 원래대로 돌리기 힘들므로 복사본을 만들어서 처리하면 되겠다고 생각하였다.
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
// arr 복사본
int[] copy = arr.clone();
// 크기가 1이라면 빈 배열이 될 것이니까 -1을 넣어줘야하므로 따로 처리
if (arr.length == 1) {
int[] answer = {-1};
return answer;
}
else {
// 1개의 숫자를 제거한 배열이므로 사이즈는 -1
int[] answer = new int[arr.length - 1];
// 복사한 배열을 오름차순으로 정렬
Arrays.sort(copy);
// answer의 인덱스
int idx = 0;
for (int i = 0; i < arr.length; i++) {
// 제일 작은 숫자라면 생략
if (arr[i] == copy[0]) {
continue;
}
// answer에 arr의 값을 넣기
answer[idx++] = arr[i];
}
return answer;
}
}
}