영호
[알고리즘] 대표값 (Python) 본문
문제 설명
학생들의 시험 점수가 주어지면 학생들의 평균을 구하고, 평균과 점수 차가 가장 적은 학생의 번호를 구하라. 이때 점수 차가 같다면 높은 점수의 학생 번호가 정답이고, 점수차와 점수 모두 같을 경우 학생 번호가 빠른 학생이 정답이다.
출력 : 평균 학생 번호
나의 풀이
- 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)
'Algorithm > 구현' 카테고리의 다른 글
[알고리즘] k번째 큰 수 (Python) (0) | 2022.06.05 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 - Python (0) | 2022.05.11 |
Comments