N명의 학생의 수학점수가 주어집니다. N명의 학생들의 평균(소수 첫째자리 반올림)을 구하고,
N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세
요.
평균과 가장 가까운 점수가 여러 개일 경우 먼저 점수가 높은 학생의 번호를 답으로 하고, 높
은 점수를 가진 학생이 여러 명일 경우 그 중 학생번호가 빠른 학생의 번호를 답으로 합니다.
첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 각 학생의 수학점수인 N개의 자연
수가 주어집니다. 학생의 번호는 앞에서부터 1로 시작해서 N까지이다.
첫줄에 평균과 평균에 가장 가까운 학생의 번호를 출력한다.
평균은 소수 첫째 자리에서 반올림합니다.
10
45 73 66 87 92 67 75 79 75 80
74 7
import sys
sys.stdin = open("input.txt","rt")
N = int(input())
a = list(map(int, input().split()))
resultVal = 0
resultIdx = 0
#수학점수 평균값 출력및 반올림처리
avg = round(sum(a)/len(a))
# float("inf") 양의 무한대(최대값으로 설정)
min = float("inf")
for idx, x in enumerate(a):
#enumerate : 배열 각각요소의 값과 index값을 쌍으로 대응해 주는 함수
tmp=abs(x-avg)
if(tmp<min):
min = tmp
score = x
res = idx+1
#elif => else if
elif tmp==min:
if x>score:
#평균차가 동일한 경우 점수가 높은 케이스의 경우에만 답으로 설정
score=x
res=idx+1
print(avg,res, sep=' ')
import sys
# sys.stdin = open("input.txt","rt")
N = int(input())
a = list(map(int, input().split()))
resultVal = 0
resultIdx = 0
#수학점수 평균값 출력
sum = 0
for i in range(len(a)):
sum += a[i]
#평균점수 반올림처리
avg = round(sum/len(a))
diffValArr = []
for i in range(len(a)):
#평균점수 차이값 절대값으로 변환
diffValue = abs(a[i]-avg)
diffValArr.append(diffValue)
#차이값 배열에서 가장 최소값 출력
minValue = min(diffValArr)
minIdxArr = []
#최소값이 단건인지 여러건인지 분기 처리
if diffValArr.count(minValue)>=1:
for i in range(len(diffValArr)):
if diffValArr[i] == minValue:
#여러 최소값index값 배열에 append
minIdxArr.append(i)
maxValArr = []
for i in range(len(minIdxArr)):
maxValArr.append(a[minIdxArr[i]])
maxValue = max(maxValArr)
maxValIdx = a.index(maxValue)
print(maxValue,maxValIdx+1, sep=' ')
else:
#단건일 경우 최소값 출력
minIdx = diffValArr.index(minValue)
minVal = a[minIdx]
minValIdx = a.index(minIdx)
print(minVal,minValIdx+1, sep=' ')