Programmers | 코딩테스트 입문 - 중앙값 구하기, sort - sorted 함수 차이

2022. 12. 27. 17:28카테고리 없음

프로그래머스 Lv.0 중앙값 구하기

문제 설명

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


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

 

JAVA

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

 

다른 사람 풀이

class Solution {
    public int solution(int[] array) {
        int answer = 0;

        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;
                }
            }
        }

        answer = array[array.length / 2];

        return answer;
    }
}

 

속도 및 크기 비교

java.util.Arrays 사용 java.util.Arrays 미사용
테스트 1 〉 통과 (0.44ms, 75.2MB)
테스트 2 〉 통과 (0.48ms, 77MB)
테스트 3 〉 통과 (0.49ms, 78.4MB)
테스트 4 〉 통과 (0.59ms, 77.7MB)
테스트 5 〉 통과 (0.40ms, 73.2MB)
테스트 6 〉 통과 (0.37ms, 78.8MB)
테스트 7 〉 통과 (0.50ms, 75.3MB)
테스트 8 〉 통과 (0.54ms, 78.7MB)
테스트 9 〉 통과 (0.47ms, 74.9MB)
테스트 1 〉 통과 (0.03ms, 75.9MB)
테스트 2 〉 통과 (0.02ms, 84.7MB)
테스트 3 〉 통과 (0.01ms, 67.9MB)
테스트 4 〉 통과 (0.02ms, 70.7MB)
테스트 5 〉 통과 (0.02ms, 72.9MB)
테스트 6 〉 통과 (0.15ms, 70.5MB)
테스트 7 〉 통과 (0.21ms, 75.2MB)
테스트 8 〉 통과 (0.20ms, 75.9MB)
테스트 9 〉 통과 (0.02ms, 76.1MB)

 

Python3

def solution(array):
    array.sort()
    return array[len(array)//2]

 

다른 사람 풀이

def solution(array):
    return sorted(array)[len(array) // 2]

배열.sort() : 반환값 없음, 해당 배열을 정렬해줌

sorted(배열) : 정렬된 새로운 배열을 반환해줌