[CodingTest] 중앙값 구하기

hye·2023년 3월 8일
0

AlgorithmTest

목록 보기
37/95

📖 Exam

문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

제한 조건

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000

입출력 예

arrayresult
[1, 2, 7, 10, 11]7
[9, -1, 0]0

9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.


✍ Answer

import java.util.Arrays;

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

💡 Realization

  • Arrays.sort() 이 최고다. 직접 풀라고하면 이제 풀 수 있을까..? 싶을 정도.

비트연산자 - 시프트연 산자( << , >> )

array[array.length >> 1]

모든 비트가 한 비트씩 오른쪽으로 이동할 때마다 그 값은 2배씩 감소한다.
참고사이트: http://www.tcpschool.com/java/java_operator_bitwise

버블정렬

class Solution {
    public int solution(int[] array) {
        for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
           	    // 현재 원소가 다음 원소보다 크다면
                if (array[j] < array[i]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array[array.length / 2];
    }
}

Stream

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int answer = 0;

        int[] arr = Arrays.stream(array)
            .boxed()
            .sorted(Collections.reverseOrder())
            .mapToInt(Integer::intValue)
            .toArray();
        return arr[array.length / 2];
    }
}

참고사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120811/solution_groups?language=java

profile
Junior Backend Developer

0개의 댓글