자기계발
프로그래머스
중앙값 구하기

프로그래머스 · 중앙값 구하기

문제

정수 배열 array가 주어진다. 값을 크기순으로 정렬했을 때 가장 가운데 있는 값(중앙값)을 반환하는 solution 함수를 완성한다. array의 길이는 홀수이고 1 이상 100 미만이며, 원소는 -1,000 초과 1,000 미만이다.

풀이

배열의 길이가 항상 홀수라서, 오름차순으로 정렬하면 길이를 2로 나눈 몫이 가운데 인덱스가 된다. 길이가 1이면 인덱스 0이고, 3이면 1, 5이면 2다. 정렬을 먼저 해야 하므로 sorted()로 리스트를 정렬한 뒤 그 인덱스를 고른다.

제출한 코드는 길이가 1일 때를 따로 나누었다.

def solution(array):
 
    return sorted(array)[0 if len(array) < 2 else len(array)//2]

길이가 1일 때도 1//2가 0이라서, 분기 없이 sorted(array)[len(array)//2]만 써도 결과는 같다.

다른 풀이

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

중간 인덱스를 변수로 빼면 다음과 같다.

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

출처