코딩테스트/책

코딩 테스트 합격자 되기_자바편

sj5262 2024. 4. 13. 20:33

<몸풀기 문제>


배열정렬하기

  • 정수 배열을 정렬해서 반환하는 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;
    }
}

출력

 


출처(코딩 테스트 합격자되기_자바편)

https://github.com/retrogemHK/codingtest_java

'코딩테스트 > ' 카테고리의 다른 글

코딩 테스트 합격자 되기_자바편  (0) 2024.04.22