파이썬 문제 풀이 부탁드립니다. ㅜㅜ 어렵네요

조회수 296회

회사는 매년 정기적으로 직원들의 건강검진을 실시하여 혈압을 측정하고 있으며, 혈압 수치에는 수축기 혈압(높음)과 확장기 혈압(낮음)이 있습니다. 회사는 전 직원의 두 가지 혈압 값을 측정한 후 전 직원의 수축기 혈압과 확장기 혈압의 평균과 중앙값을 계산해 출력합니다.

숫자 문자열의 중앙값은 숫자가 순서대로 중앙에 배치된 값입니다. 예를 들어 3,7,1,9,5의 중앙값은 5이고 5,8,2,6의 중앙값은 5와6의 평균값이다. (소수점에서 무조건 반올림).

직원의 두 혈압에 대한 중앙값 계산을 완료하려면 split − range() 함수를 완료하는 데 도움을 주세요. (참고: 이 프로그램은 중앙값을 찾기 위해 정렬을 사용하지 않습니다.)

입력 형식:

n: 직원 수 ha1, …, han: 직원의 수축기 혈압 hb1, …, hbn: 직원의 확장기 혈압

출력 형식: ha_avg : 직원 평균 수축기 혈압 hb_avg : 직원 평균 확장기 혈압 ha_md : 직원의 수축기 혈압 중앙값 hb_md : 직원의 확장기 혈압 중앙값

조건 def split_range(pivot_position, mid, left, right): 함수

pivot_position: 분할점 위치

mid: 중간 위치

left: 왼쪽 끝 정렬

right: 오른쪽 끝 정렬

이 함수는 split 함수(pivot_position)를 호출한 결과에 따라 탐색 범위를 점차적으로 좁힙니다.

def split_range(pivot_position,mid,left,right):

샘플 자료:

1.

input

5

139 93 121 142 116

68 89 58 67 83

print

122

73

121

68

2.

input

4

125 132 130 108

96 67 82 96

print

123

85

127

89

3.

input

3

149 147 119

77 68 70

print

138

71

147

70

4.

input

10

108 140 141 132 140 100 116 116 94 90

89 55 84 77 79 91 74 72 85 99

print

117

80

116

81

5.

input

1

134

55

print

134

55

134

55


def average(data, n):
avg =0
for x in data:
avg += x
return avg//n
def split(data, left, right):
pivot = data[left]     
pivot_position = left
for i in range(left+1,right+1):
if data[i] < pivot:
pivot_position += 1
data[i], data[pivot_position] = data[pivot_position], data[i]
data[left], data[pivot_position] = data[pivot_position], data[left]
return pivot_position
def split_range(pivot_position, mid, left, right):


???????????????????????????????????????????????????????????????????????????????


def half(data, n):
value = data[n//2]
for i in range(n//2,n):
if data[i] < value:
value = data[i]
return value
def median(data, n):
left = 0
right = n-1
mid = (left+right)//2
while(True):
pivot_position = split(data, left, right)
if pivot_position == mid:
break
else:
left,right = split_range(pivot_position, mid, left, right)
if n%2 == 1:
return data[mid]
else:
return (data[mid] + half(data, n))//2
num = int(input())
systolic = list(map(int,input().split()))
diastolic = list(map(int,input().split()))
sy_average = average(systolic, num)
dia_average = average(diastolic, num)
sy_median = median(systolic, num)
dia_median = median(diastolic, num)
print(sy_average, dia_average, sy_median, dia_median,sep='\n')

중간 물음표 란에 어떤 코드를 써야될까요? ㅠㅠ 문제 풀이 부탁드립니다 되신다면 해석도 부탁드리겠습니다 언제나 감사드립니다!

  • print("선생님 죄송합니다 재수강만 면하게 C- 처리 부탁드립니다") 엽토군 2022.10.19 16:51

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)