반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[프로그래머스/Java] 코딩테스트 Lv.0 중앙값 구하기 (배열 정렬 방법) 본문

。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★/나의 코딩테스트

[프로그래머스/Java] 코딩테스트 Lv.0 중앙값 구하기 (배열 정렬 방법)

yeonee 여니 2023. 6. 7. 19:06
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

Arrays.sort()을 이용하여 배열(Array)을 정렬(sorting)할 수 있습니다.

배열에 저장된 객체의 타입(Integer, String 등)과 관련 없이, Comparable이 구현된 객체라면 모두 정렬할 수 있습니다.

기본적으로 객체는 Comparable이 구현되어있습니다. sort()는 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 배열을 정렬합니다.

1. int 배열 정렬 (오름차순, 내림차순)

Arrays.sort()로 int 배열을 인자로 전달하면 오름차순으로 정렬됩니다.

  • sort() 함수 내부에서 변수 arr의 순서를 변경해주기 때문에 리턴 값을 다른 변수에 할당할 필요가 없음
  • 원본 배열의 순서가 변경됨

+ 내림차순 정렬

내림차순으로 정렬하려면 sort()의 인자에 추가로 Collections.reverseOrder()를 전달해야 합니다.

  • Collections.reverseOrder()는 Comparator 객체이며, 역순으로 정렬해줌
  • Comparator는 직접 구현할 수 있지만, 미리 정의된 Collections 함수를 사용할 수 있음

+ 배열 정렬 그외 플러스 내용

2. int 배열, 부분 정렬

위의 예제는 배열(Array) 전체를 정렬하였습니다. 하지만, 배열의 일부분만 정렬할 수도 있습니다.

다음과 같이 sort()의 인자로 정렬 범위에 대한 처음 index와 마지막 index를 전달합니다.

3. String 배열 정렬(Sorting)

String 배열도 Integer와 동일합니다.

아래 예제처럼 문자열 정렬은, 알파벳의 아스키 값을 비교를 하여 오름차순으로 정렬합니다.

4. String 배열, 문자열 길이 순서로 정렬(Sorting)

만약 문자열 길이로 정렬을 하고 싶을 때는 직접 Comparator를 구현해야 합니다. 기본적으로 구현된 Comparator가 아스키 코드로 정렬하기 때문입니다.

5. 객체 배열 정렬(Sorting)

Custom 클래스의 객체를 갖고 있는 배열도 sort()로 정렬할 수 있습니다.

대신, Custom 클래스에 Comparable을 구현하여 sort()가 객체를 비교할 수 있도록 만들어야 합니다.

아래 예제에서는 Fruit라는 클래스를 정의하였습니다. 이 클래스는 Comparable<Fruit>를 구현하고 있습니다.

  • 이 클래스에서 compareTo() 함수는 자기 자신의 클래스와 인자로 전달되는 Fruit 객체의 price를 비교합니다.

<배열 정렬 참고 포스팅 주소>https://codechacha.com/ko/java-sorting-array/#1-int-%EB%B0%B0%EC%97%B4-%EC%A0%95%EB%A0%AC-%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C

 

Java - 배열 정렬(Sorting) (오름차순, 내림차순)

Arrays.sort()을 이용하면 쉽게 배열(Array)을 내림차순, 오름차순으로 정렬(sorting)할 수 있습니다. Integer, String 등 구분없이 모든 객체를 정렬할 수 있습니다. 또한, 클래스에 Comparable을 구현하면 객체

codechacha.com

 


나의 입력값

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        Arrays.sort(array);
        answer = array[array.length/2];
        return answer;
    }
}


그 외 다른 풀이방법

1.

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        Arrays.sort(array);
        return array[array.length >> 1];
    }
}

>> 연산이 /보다 성능상 더 좋다고는 하더라구요. (거의 무시할 수준이라 가독성을 위해서라도 쓰는게 좋다고 본다네요!)

2.

import java.util.*;

class Solution {
    public int solution(int[] array) {
        Arrays.sort(array);

        return array[array.length / 2];
    }
}

3.

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        Arrays.sort(array);
        return array[array.length / 2];
    }
}
728x90
반응형
LIST