문제 설명
정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성한다. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴한다. 예를 들어 [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] |
초기 코드
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
return answer;
}
}
정답 코드
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
if(arr.length==1) return new int[]{-1};
int loc = 0;
for(int i = 0; i < arr.length ; i++)
if(arr[i]<arr[loc])
loc = i;
int cnt = 0;
answer = new int[arr.length - 1];
for(int i = 0; i < arr.length ; i++) {
if(i==loc) continue;
answer[cnt++] = arr[i];
}
return answer;
}
}
코드 설명
-1을 리턴하는 경우는 빈 배열인 경우다. 다시 말해 배열의 길이가 1이라면 min은 그 값이 될테니 빈 배열이다. 따라서 -1을 배열에 담아 리턴한다.
answer의 길이는 제일 작은 수를 빼기 때문에 arr의 길이보다 1 작다. 만약 1을 빼지 않는다면 빈 자리에 0이 들어가기 때문에 0도 같이 리턴한다.
만약 min이 있는 위치와 i가 같다면 continue를 해줘 건너뛴다. 이때 answer와 arr의 방의 길이가 다르므로 cnt를 따로 줘 인덱스 번호를 맞춘다.
'programmers-코딩테스트 연습 > Level 1. 자바' 카테고리의 다른 글
2021-06-17 / 문자열 내 p와 y의 개수 (0) | 2021.06.17 |
---|---|
2021-06-16 / 최대공약수와 최소공배수 (0) | 2021.06.16 |
2021-06-15 / 서울에서 김서방 찾기 (0) | 2021.06.15 |
2021-06-14 / 직사각형 별찍기 (0) | 2021.06.14 |
2021-06-13 / 핸드폰 번호 가리기 (0) | 2021.06.13 |