대표값 출력하기

박지예·2021년 9월 30일
0

공부

목록 보기
10/42

1. 대표값


n명의 학생의 수학성적이 주어진다. N명의 학생들의 평균(소수 첫번째 자리 반올림)을 구하고, N명의 학생 중 평균에 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세요.

답이 2개일 경우 성적이 높은 학생의 번호를 출력하시오. 만약 답이 되는 점수가 여러 개 일 경우 번호가 빠른 학생의 번호를 답으로 한다.

  • 입력

첫줄에 자연수 N이 주어지고, 두번째 줄에는 N개의 자연수가 주어진다.

학생의 번호는 앞에서 부터 1부터 N까지 이다.

  • 출력

첫 줄에 평균과 평균에 가까운 학생의 번호를 출력한다.

평균은 소수 첫째 자리에서 반올림 한다.

  • 입력예제 1

첫번째 줄: 10

두번째 줄: 65, 73, 66, 87, 92, 67, 55, 79, 75, 80

  • 출력예제

74, 9


먼저 값을 입력 받는다

# 대표 값 입력
n = int(input())
arr = list(map(int,input().split()))

학생들의 점수는 리스트로 입력 받는다

그다음 평균을 구한다

avg = round(sum(arr)/n)

여기서 잠깐!
알아두면 좋은 파이썬 함수:
파이썬은 C와 다르게 list(또는 배열) 평균을 구하는 것이 매우 easy하다
sum함수는 이름으로 알다시피 list의 합을 구해주는 함수이고
round함수는 소수 첫째 자리에서 반올림 해주는 함수이다.

min = len(arr) + 55

여기서 min 변수는 후에 평균과 리스트 내의 변수들 사이의 차이중 가장 작은 차이를 가지고 있는 수가 들어갈 예정이다.
이때 처음의 초기값을 절대 나올 수 없는 커다란 값으로 넣어준다.

여기서 이제 for 문을 돌려준다

for idx, x in enumerate(arr):
    #abs: 값 과의 거리
    tmp = abs(x - avg)

    #거리 값이 가장 가까운 학생이 평균과 가장 가깝다.
    if tmp<min:
        #index와 값 저장
        min = tmp
        score = x
        #학생 번호 저장
        res = idx + 1

    #같은 거리가 나왔을 때
    elif tmp == min:
        if x>score:
            score = x
            res = idx+1

여기서 잠깐!
enumerate함수:
for 문안에서 매우 유용하게 사용한다
for 문 첫번째 변수에는 함수에 들어간 리스트의 인덱스 값, 두번째 변수에는 리스트의 값을 넣어준다

res는 리스트의 인덱스 이므로 0부터 시작하기 때문에 몇번 째 학생인지 구하려면 1을 더해줘야 한다

print(avg,res)

출력하면 끝!

위에 2개 입력 밑에 출력

profile
언젠간 바다로 갈거야!🐋

0개의 댓글