본문 바로가기
개발/개발 공부

[프로그래머스] 코딩테스트 입문 : 중앙값 구하기

by 하모예 2024. 8. 28.

| 문제

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때

가장 중앙에 위치하는 값을 의미합니다.

예를 들어 1,2,7,10,11의 중앙값은 7입니다.

정수 배열 array가 매개변수로 주어질 때,

중앙값을 return하도록 solution 함수를 완성해 보세요.

| 제한 사항

array의 길이는 홀수입니다.

0 < array의 길이 < 100

-1000 < array의 원소 < 1,000

| 입출력 예

array result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0

| 풀이 1

배열을 오름차순으로 정렬한 다음 가운데 있는 값을 return 했습니다.

public int solution01(int[] array) {
	for(int i = 0 ; i < array.length ; i++){
		for(int j = 0 ; j < array.length ; j++){
			if(array[i] > array[j]){
				int temp = array[i];
				array[i] = array[j];
				array[j] = temp;
			}
		}
	}
	return array[array.length / 2];
}

| 풀이 2

java.util 패키지 아래에 있는 Arrays 클래스의 도움을 받았습니다.

Arrays가 가지고 있는 메소드 sort를 사용하면 손쉽게 정렬이 가능합니다.

import java.util.Arrays;

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

| 해설

여러 숫자 또는 문자 정보가 주어졌을 때

최댓값, 최솟값, 중앙값을 도출하는 방법은 항상 정렬에서부터 출발합니다.

다만 조건문과 반복문으로 직접 정렬하니

sort 메소드를 사용하는 것보다 0.2ms 정도 빠르게 수행되었습니다.

해가 갈수록 많은 래퍼런스들이 쏟아져 나오지만

항상 클래식을 이길 수 있는 건 없다는 생각이 드네요.

댓글