<몸풀기 문제>
배열정렬하기
- 정수 배열을 정렬해서 반환하는 solution() 함수를 완성하라
- 권장 시간 복잡도 : O(NlogN)
제약조건
🔸 정수 배열의 길이는 2이상 10⁵ 이하입니다.
🔸 정수 배열의 각 데이터 값은 -100.000 이상 100.000 이하입니다.
입출력의 예
| 입력 | 출력 |
| [1, -5, 2, 4, 3] | [-5, 1, 2, 3, 4] |
| [2, 1, 1, 3, 2, 5, 4] | [1, 1, 2, 2, 3, 4, 5] |
| [6, 1, 7] | [1, 6, 7] |
문제 분석하고 풀기
- 제약 조건을 주의 깊게 봐라 → "제약 조건에 따른 알고리즘의 선택을 보여주기 위함"
- 데이터 개수 : 최대 10⁵
- 제한 시간이 3초라면 → O(N²) 알고리즘은 사용할 수 없음
- Arrays.sort() 메서드
- 배열을 오름차순으로 정렬
- 원본 배열 자체를 정렬시킴
코드
import java.util.Arrays;
public class Ex_01 {
public static void main(String[] args) {
System.out.println(Arrays.toString(solution(new int[]{1, -5, 2, 4, 3})));
System.out.println(Arrays.toString(solution(new int[]{2, 1, 1,3, 2, 5, 4})));
System.out.println(Arrays.toString(solution(new int[]{6, 1, 7})));
}
private static int[] solution(int[] arr) {
Arrays.sort(arr);
return arr;
}
}
출력

원본 배열의 상태를 우지하면서 원본 배열로부터 새로운 배열을 복사해서 사용해야 되는 상황에서는 clone() 메서드를 사용하자
import java.util.Arrays;
public class Ex_01_1 {
public static void main(String[] args) {
int[] org = {4, 2, 3, 1, 5};
int[] sorted = solution(org);
System.out.println(Arrays.toString(org)); // [4, 2, 3, 1, 5]
System.out.println(Arrays.toString(sorted)); // [1, 2, 3, 4, 5]
}
private static int[] solution(int[] arr) {
int[] clone = arr.clone();
Arrays.sort(clone);
return clone;
}
}
출력

출처(코딩 테스트 합격자되기_자바편)
'코딩테스트 > 책' 카테고리의 다른 글
| 코딩 테스트 합격자 되기_자바편 (0) | 2024.04.22 |
|---|