📟시도
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int[] answer = new int[arr.length];
List<Integer> arr2 = new ArrayList<>();
Arrays.sort(arr);
for(int i=1; i<arr.length; i++){
arr2.add(arr[i]);
}
Collections.sort(arr2, Collections.reverseOrder());
if(arr.length == 1){
answer = new int[]{-1};
return answer;
} else {
answer = arr2;
return answer;
}
}
}
의도 : 가장 작은 수를 제거 하고 내림차순으로 리턴이니까,
arr
배열을 오름차순 정렬한 뒤, 인덱스 0번을 제외한 값을 새로운 컬렉션에 추가 ->내림차순 리턴을 위해
->Collections.reverseOrder()
그리고 난 뒤 조건문에 따른 결과값 반환
반환 타입이 배열인데 컬렉션을 반환하려고 했음
💻수정
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
return new int[]{-1};
}
List<Integer> arr2 = new ArrayList<>();
for(int i=1; i<arr.length; i++){
arr2.add(arr[i]);
}
Collections.sort(arr2, Collections.reverseOrder());
int[] answer = new int[arr2.size()];
for(int i=0; i<arr2.size(); i++){
answer[i] = arr2.get(i);
}
return answer;
}
}
- 예외인 경우는 바로 return 출력
- 컬렉션을 배열값에 다시 저장해서 출력
코드 실행은 되나, 테스트에서 전부 실패 ..?
📟시도2
최소값을 특정한 이후에 다시 시도
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
return new int[]{-1};
}
int min = arr[0];
for(int i=0; i<arr.length; i++){
if(arr[i]<min){
min = arr[i];
}
}
List<Integer> arr2 = new ArrayList<>();
for(int i=0; i<arr.length-1; i++){
if(arr[i] != min){
arr2.add(arr[i]);
}
}
Collections.sort(arr2, Collections.reverseOrder());
int[] answer = new int[arr2.size()];
for(int i = 0; i<arr2.size(); i++){
answer[i] = arr2.get(i);
}
return answer;
}
}
또 테스트에서 안되는 오류
📟시도3
자세히 보니, 문제에 내림차순이란 말이 없다-> 배열만 사용
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
return new int[]{-1};
}
int min = arr[0];
for(int i=1; i<arr.length; i++){
if(arr[i]<min){
min = arr[i];
}
}
int[] answer = new int[arr.length-1];
for(int i=0; i<arr.length-1; i++){
if(arr[i]!=min){
answer[i] = arr[i];
}
}
return answer;
}
}
배열만 사용해서 다시 수정했으나, 모두 코드 실행은 되지만 테스트에서 안되는 오류
for(int i=0; i<arr.length-1; i++){ if(arr[i]!=min)
최소값이 첫번째 인덱스에 없을 경우도 있기 때문에 범위가 틀렸고,answer[i] = arr[i]
-> 최소값을 만날 경우answer
의 인덱스값을 건너뛰기 때문에 따로 설정필요
💻수정
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
return new int[]{-1};
}
int min = arr[0];
for(int i=1; i<arr.length; i++){
if(arr[i]<min){
min = arr[i];
}
}
int[] answer = new int[arr.length-1];
int index = 0;
for(int i=0; i<arr.length; i++){
if(arr[i]!=min){
answer[index] = arr[i];
index++;
}
}
return answer;
}
}