대표값

도로롱·2023년 4월 14일

문제

N명의 학생의 수학 점수가 주어진다. N명의 학생들의 평균(소수 첫째 자리 반올림)을 구하고, N명의 학생 중 평균에 가장 가까운 학생은 몇번째 학생인지 출력하는 프로그램을 작성하세요
단, 평균과 가장 가까운 점수가 여러 개일 경우 먼저 점수가 높은 학생의 번호를 답으로 하고, 높은 점수를 가진 학생이 여러명 일 경우 번호가 빠른 학생의 번호를 출력하세요

입력

N=10
score =[45,73,66,87,92,67,75,79,75,80]

풀이

  • 평균과 가장 가까운 점수는 절댓값을 씌운 수학점수 - 평균 점수로 구한다
  • 가장 어려웠던 부분은 가까운 점수가 여러개 있을때 점수가 높고, 번호가 빠른 학생의 번호를 구현하는 것이다
    - 최솟값을 가장 큰수로 임의로 지정 후에 tmp라는 변수를 만들어 절대값을 씌운 거리를 구한다
    • 최솟값에 해당되는 idx, math을 구한다
    • 만일 평균까지의 거리가 동일 하고, math 점수가 이전 수학점수 (ms) 보다 큰 경우에만 실행 될 수 있는 코드를 구현한다

코드

n = 10

score =[45,73,66,87,92,67,75,79,75,80]


# 평균 점수

aver_score = round(sum(score)/n,0)


# 수학점수 - 평균 수학점수 절댓값이 가장 작은 학생 번호 구하기

min = 2147000000 # 거리의 최솟값을 구해야 하므로

for idx, math in enumerate(score): # 인덱스와 값을 함께 반환하는 함수
    tmp = abs(math-aver_score) # 거리

    if tmp < min :
        ms = math
        min = tmp
        res = idx +1

    elif tmp == min: # 절댓값이 같은 경우
        if math > ms:
            ms = math
            res = idx+1

print(res)
profile
질문 없는 성장은 없다. 3년차 데이터 분석가

0개의 댓글