본문 바로가기
Hello python

[Python] 주어진 리스트의 중간값 구하는 함수 구현하기 (median)

by Theo"Dora"-sci 2023. 5. 19.
반응형

 
 

문제: 주어진 리스트의 중간값을 구하는 함수 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. 홀수의 경우 

리스트 내 len이 홀수일 경우

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

 
 
2. 짝수의 경우

리스트 내 len이 짝수일 경우

  • 짝수일 때, -index의 위치와 index의 위치가 일치하는 것을 확인할 수 있습니다. 
  • 따라서, -(Index-1)을 하면 index보다 한 위치 앞서는 요소를 지목하게 됩니다. 
  • Index 3의 위치: "44"
  • Index -3 -1의 위치: "33"
  • 두 수를 더하고 나누기 2를 하면, 두 수의 평균을 반환하게 됩니다.
728x90
반응형