대표값

개발새발개발러·2022년 4월 22일
0

알고리즘

목록 보기
4/11
post-thumbnail

문제

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

입력설명

첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 각 학생의 수학점수인 N개의 자연
수가 주어집니다. 학생의 번호는 앞에서부터 1로 시작해서 N까지이다.

출력설명

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

입력예제 1

10
45 73 66 87 92 67 75 79 75 80

출력예제 1

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=' ')

풀이2

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=' ')

0개의 댓글