반응형

문제: 주어진 리스트의 중간값을 구하는 함수 get_median()을 구현하시오.
(단, 주어진 리스트의 길이가 짝수이면, 두 중간값의 평균을 중간값으로 구한다.)
생각할 점
1. 데이터를 정렬해야 한다.
2. 짝수와 홀수를 구분하여 값을 구해야 한다.
3. 파이썬의 위치(index)는 0부터 시작한다.
방법1. If문 사용하여 중간값 구하기
def get_median(input_num):
input_num.sort() #주어진 리스트 정렬하기
if len(input_num) % 2 == 0: #짝수일 경우
pre = input_num[(len(input_num)//2)-1]
post = input_num[(len(input_num)//2)]
return((pre+post)/2)
else: #홀수일 경우
return(input_num[(len(input_num)//2)])
print(get_median([1,2,3,4,5])) #3
1. 데이터 정렬합니다 (sort함수 사용하기) → input_num.sort()
2. 짝수와 홀수 구분하기 → %2 ==0 (2로 나눈 나머지가 0일 때)
3. //2는 몫을 의미하는 것이라는 것을 이용하여 중간값을 구합니다.
방법2. -Index를 사용하여 If문 사용하여 중간값 구하기
def get_median_v2(input_num):
input_num = sorted(input_num) #주어진 리스트 정렬하기
center_Index=len(input_num)//2 #center_Index 값 할당하기
return (input_num[center_Index]+input_num[-center_Index -1])/2
print(get_median_v2([1,2,3,4,5,6])) #3.5
print(get_median_v2([1,2,3,4,5])) #3
1. 데이터 정렬합니다.
: 방법1과 달리 sorted를 사용함. sorted는 반환받을 변수가 필요합니다. → sorted(input_num)
2. center_Index 값 설정합니다.
3. //2는 몫을 의미하는 것이라는 것을 이용하여 중간값을 구합니다.
홀수와 짝수, Index 자세한 풀이
이해를 돕기 위해 list 값을 11, 22 등으로 표기하였습니다.
1. 홀수의 경우

- center_Index 나누기 2의 몫은 = 2
- Index 2의 위치: "33"
- Index -2 - 1의 위치: "33"
- 같은 위치의 요소를 지목하게 됩니다.
- 따라서 최종 값은 "33" 중간값을 반환하게 됩니다.
2. 짝수의 경우

- 짝수일 때, -index의 위치와 index의 위치가 일치하는 것을 확인할 수 있습니다.
- 따라서, -(Index-1)을 하면 index보다 한 위치 앞서는 요소를 지목하게 됩니다.
- Index 3의 위치: "44"
- Index -3 -1의 위치: "33"
- 두 수를 더하고 나누기 2를 하면, 두 수의 평균을 반환하게 됩니다.
728x90
반응형
'Hello python' 카테고리의 다른 글
| [Python] 파이썬 시험 점수에 따른 성적 등급 구하기, 한 줄 함수 만들기 (2) | 2023.05.22 |
|---|---|
| [Python] 리스트의 표준편차를 구하는 함수 구현하기 (0) | 2023.05.20 |
| [Python] 주어진 리스트의 평균값을 구하는 함수 구하기 (2) | 2023.05.18 |
| [Python] 반복문 for 문을 이용한 짝수합, 홀수합 구하기 (0) | 2023.05.05 |