영호

[알고리즘] 대표값 (Python) 본문

Algorithm/구현

[알고리즘] 대표값 (Python)

0h0 2022. 6. 7. 16:04

문제 설명

 

파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의

파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...

www.inflearn.com

학생들의 시험 점수가 주어지면 학생들의 평균을 구하고, 평균과 점수 차가 가장 적은 학생의 번호를 구하라. 이때 점수 차가 같다면 높은 점수의 학생 번호가 정답이고, 점수차와 점수 모두 같을 경우 학생 번호가 빠른 학생이 정답이다.

 

출력 : 평균 학생 번호

 

나의 풀이

  • round()를 이용해 소수 첫째 자리에서 반올림해 학생들의 평균을 구합니다.
  • 평균 점수 - 첫 학생의 점수를 min 변수에 할당한 뒤, 두 번째 학생 점수와 평균 점수의 차를 min과 비교합니다.
    • min > 평균 - 학생 점수 이면 min, answer를 무조건 갱신합니다.
    • min == 평균 - 학생 점수 이면 기존 학생 점수와 새로운 학생 점수를 비교해 새로운 학생 점수가 더 클 경우 갱신합니다.
  • 이때, 평균 점수 - 첫 학생의 점수를 구할 때 abs()를 이용해 절댓값으로 계산해야 합니다.

 

Code

import sys
# sys.stdin=open("input.txt", "r")
n = int(input())
scores = list(map(int,input().split()))
avg = round(sum(scores) / len(scores))

min = avg - scores[0]

answer = (0, scores[0])

for i in range(1,len(scores)):

    if abs(avg - scores[i]) < min:
        min = abs(avg - scores[i])
        answer = (i, scores[i])
    elif abs(avg - scores[i]) == min and answer[1] < scores[i]:
        answer = (i, scores[i])


print(avg, answer[0] + 1)
Comments