문제
N명의 학생의 수학점수가 주어집니다. N명의 학생들의 평균(소수 첫째자리 반올림)을 구하고, N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세 요.
평균과 가장 가까운 점수가 여러 개일 경우 먼저 점수가 높은 학생의 번호를 답으로 하고, 높은 점수를 가진 학생이 여러 명일 경우 그 중 학생번호가 빠른 학생의 번호를 답으로 합니다.
입력
첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 각 학생의 수학점수인 N개의 자연 수가 주어집니다. 학생의 번호는 앞에서부터 1로 시작해서 N까지이다.
10 45 73 66 87 92 67 75 79 75 80 |
출력
첫줄에 평균과 평균에 가장 가까운 학생의 번호를 출력한다. 평균은 소수 첫째 자리에서 반올림합니다.
74 7 |
답
N = int(input())
li = list(map(int, input().split()))
avg = round(sum(li) / len(li))
min = abs(avg - li[0])
score = li[0]
num = 1
for i, n in enumerate(li):
t = abs(avg - n)
if t < min:
min = t
scroe = n
num = i + 1
print(avg, num)
💡 enumerate( )
: 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환.
💡 abs( )
: 절대값 반환.
'Python > 알고리즘' 카테고리의 다른 글
[Python/알고리즘] 자릿수의 합 (0) | 2022.10.22 |
---|---|
[Python/알고리즘] 정다면체 (0) | 2022.10.21 |
[Python/알고리즘] K번째 큰 수 (0) | 2022.10.21 |
[Python/알고리즘] K번째 수 (0) | 2022.10.21 |
[Python/알고리즘] K번째 약수 (0) | 2022.10.21 |
댓글