[Python] 코딩 도장 - 중앙값 구하기

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 중앙값 구하기] - Lv.1

리스트에 있는 숫자들의 중앙값을 구하는 프로그램을 만들어라.

[7, 9, 14] = 9
[24, 31, 35, 49] = 33
[17, 37, 37, 47, 57] = 37

중앙값 : 자료를 작은 값에서부터 크기순으로 나열할 때 중앙에 위치한 값
① 자료의 개수가 홀수이면 가운데 위치한 값이 중앙값이다.
② 자료의 개수가 짝수이면 가운데 위치한 두 값의 평균이 중앙값이다.

출처: https://codingdojang.com/scode/611?answer_mode=hide


[풀이]

def median_lst(x):
    x2 = sorted(x)
    cen_idx = int(len(x2)/2)
    
    if len(x2) % 2 == 0:
        return (x2[cen_idx-1] + x2[cen_idx]) / 2
    else:
        return x2[cen_idx]
    
x = [17, 37, 37, 47, 57]
median_lst(x)
37

사실 numpy 패키지에서 np.median()을 사용하면 더 편한데 패키지 없이 작성해보았다.

리스트 정렬 후 길이가 짝수인 경우와 홀수인 경우를 분리해서 계산식을 입력하였다.


[추천 풀이]

import statistics

test =[[7,9,14],[24, 31, 35, 49],[17,37,37,47,57]]

for i in range(len(test)):
    print(test[i],'=',statistics.median(test[i]))
[7, 9, 14] = 9
[24, 31, 35, 49] = 33.0
[17, 37, 37, 47, 57] = 37

이 분은 패키지를 이용해서 간단하게 푸셨다.

Leave a comment