Far from it.
제일 작은수 제거하기 본문
문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arrreturn
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
//
중복된 원소는 배열에 안들어간다고 제한조건을 걸어놨으니 입력받는 배열의 길이가 n이라면
return 되는 배열은 n-1이라고 생각하고 문제를 접근했다.
public class Solution {
public int[] solution(int[] arr) {
int[] answer = new int[arr.length-1]; // 제일 작은수를 하나 제거했으므로
int min = arr[0]; // 제일 작은 수를 일단 배열의 첫번째 원소로 지정
int tem = 0;
if(arr.length<=1) { // 배열의 원소가 하나거나 배열이 비어있을 경우 -1을 return
return new int[] {-1};
}
for (int i = 0; i < arr.length; i++) { // 배열에서 제일 작은 원소를 찾아 min에 저장
if(min > arr[i]) {
min = arr[i];
}
}
for (int i = 0; i < arr.length; i++) { // 배열에서 min을 찾아서 뒤로 한칸씩 이동
if(min==arr[i]) {
for (int j = i+1; j < arr.length;) {
tem = arr[i];
arr[i]=arr[j];
arr[j]=tem;
break;
}
}
}
for (int i = 0; i < arr.length-1; i++) { //이동시킨 배열을 answer에 저장
answer[i] = arr[i];
}
return answer;
}
}
처음에 왜 계속 오류가 뜨나 싶었는데
" 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴 " 을 제대로 작성하지 못해서 생긴 문제였다.
'문제풀기' 카테고리의 다른 글
시저 암호 (0) | 2019.09.22 |
---|---|
문자열 다루기 기본 (0) | 2019.09.22 |
콜라츠 추측 (0) | 2019.09.17 |
최대공약수와 최소공배수 (0) | 2019.09.17 |
하샤드 수 (0) | 2019.09.17 |