*모든 풀이 코드는 직접 작성하였습니다.
문제
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
문제 풀이
Stream 으로 하면 훨씬 간결하지만, 오랜만에 배열 카피 메소드를 써볼 겸 System.arraycopy() 메소드를 사용했다.
- 제일 작은 값의 인덱스 구하기
- 인덱스 기준으로 배열 복사해서 새로 배열 만들기
풀이 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
// 빈 배열일 경우 -1 채운 배열 반환
if(arr.length <= 1 ) return new int[] {-1};
//붙여넣을 새 배열 생성
int[] result = new int[arr.length - 1];
//최소값 인덱스 찾기
int minIndex = 0;
for(int i = 1; i < arr.length; i++){
if(arr[i] < arr[minIndex]) minIndex = i;
}
//복사
System.arraycopy(arr, 0, result, 0, minIndex);
System.arraycopy(arr, minIndex + 1, result, minIndex, arr.length - minIndex - 1);
return result;
}
}
'Coding Test' 카테고리의 다른 글
Programmers - 올바른 괄호 (Java) (Lv.2) (0) | 2023.12.19 |
---|---|
Programmers - JadenCase 문자열 만들기 (Java) (Lv.2) (0) | 2023.12.19 |
Programmers - 없는 숫자 더하기 (Java) (Lv.1) (0) | 2023.12.19 |
Programmers - 음양 더하기 (Java) (Lv.1) (0) | 2023.12.19 |
Programmers - 핸드폰 번호 가리기 (Java) (Lv.1) (0) | 2023.12.19 |