n명의 학생의 수학성적이 주어진다. N명의 학생들의 평균(소수 첫번째 자리 반올림)을 구하고, N명의 학생 중 평균에 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세요.
답이 2개일 경우 성적이 높은 학생의 번호를 출력하시오. 만약 답이 되는 점수가 여러 개 일 경우 번호가 빠른 학생의 번호를 답으로 한다.
첫줄에 자연수 N이 주어지고, 두번째 줄에는 N개의 자연수가 주어진다.
학생의 번호는 앞에서 부터 1부터 N까지 이다.
첫 줄에 평균과 평균에 가까운 학생의 번호를 출력한다.
평균은 소수 첫째 자리에서 반올림 한다.
첫번째 줄: 10
두번째 줄: 65, 73, 66, 87, 92, 67, 55, 79, 75, 80
74, 9
먼저 값을 입력 받는다
# 대표 값 입력
n = int(input())
arr = list(map(int,input().split()))
학생들의 점수는 리스트로 입력 받는다
그다음 평균을 구한다
avg = round(sum(arr)/n)
여기서 잠깐!
알아두면 좋은 파이썬 함수:
파이썬은 C와 다르게 list(또는 배열) 평균을 구하는 것이 매우 easy하다
sum
함수는 이름으로 알다시피 list의 합을 구해주는 함수이고
round
함수는 소수 첫째 자리에서 반올림 해주는 함수이다.
min = len(arr) + 55
여기서 min
변수는 후에 평균과 리스트 내의 변수들 사이의 차이중 가장 작은 차이를 가지고 있는 수가 들어갈 예정이다.
이때 처음의 초기값을 절대 나올 수 없는 커다란 값으로 넣어준다.
여기서 이제 for 문을 돌려준다
for idx, x in enumerate(arr):
#abs: 값 과의 거리
tmp = abs(x - avg)
#거리 값이 가장 가까운 학생이 평균과 가장 가깝다.
if tmp<min:
#index와 값 저장
min = tmp
score = x
#학생 번호 저장
res = idx + 1
#같은 거리가 나왔을 때
elif tmp == min:
if x>score:
score = x
res = idx+1
여기서 잠깐!
enumerate
함수:
for 문안에서 매우 유용하게 사용한다
for 문 첫번째 변수에는 함수에 들어간 리스트의 인덱스 값, 두번째 변수에는 리스트의 값을 넣어준다
res는 리스트의 인덱스 이므로 0부터 시작하기 때문에 몇번 째 학생인지 구하려면 1을 더해줘야 한다
print(avg,res)
출력하면 끝!
위에 2개 입력 밑에 출력