[algorithms] 대표값

Hyeseong·2022년 2월 22일
0

알고리즘

목록 보기
7/9

n명의 학생의 수학 성적이 주어집니다. n명의 학생들의 평균(평균 소수 첫째자리 반올림)을 구하고, n명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세요.

답이 2개일 경우 성적이 높은 학생의 번호를 출력하세요. 만약 답이 되는 점수가 여러 개일 경우 번호가 빠른 번호가 답으로 한다.

  • 입력 설명
    첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 N개의 자연수가 주어진다.
    학생의 번호는 앞에서부터 1로 시작해서 N까지이다.

  • 출력설명
    첫줄에 평균과 평균에 가장 가까운 학생의 번호를 출력한다.
    평균은 소수 첫째 자리에서 반올림한다.

  • 입력 예제
    10
    65 73 66 87 92 67 55 79 75 80

  • 출력 예제
    74 9

  1. 평균을 구함
  • round() 함수를 이용하고 몇 번째까지만 표현하고 반올림하고 싶을 때 2번째 위치 매개변수에 자연수 입력
    학생 총점 / 전체수
  1. 평균에 가장 가까운 학생 즉, 편차 구하기
tmp=abs(x-ave)
  1. 답이 1개일 경우
       if tmp<min:    # 현재 가장 낮은 값으로 된 min보다 더 작은 경우 
           min = tmp  # 
           score = x
           res = idx+1
  2. 답이 2개일 경우이거나 답이 되는 점수가 여러개일 경우 번호가 빠른 번호
	elif tmp==min:
        if x> score:
            score=x
            res=idx+1
import sys

n=int(input())
a=list(map(int, input().split()))
ave=round(sum(a)/n)
min=2147000000
for idx, x in enumerate(a):
    tmp=abs(x-ave) # 평균과 단일 수학점수를 뺀 평균과의 차
    if tmp<min:    # 현재 가장 낮은 값으로 된 min보다 더 작은 경우 
        min = tmp  # 
        score = x
        res = idx+1
    elif tmp==min:
        if x> score:
            score=x
            res=idx+1
print(ave, res)
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글