본문 바로가기

코딩 테스트/백준 파이썬 문제 풀이

[백준 4344번 파이썬] 평균은 넘겠지

https://www.acmicpc.net/problem/4344

 

이번 문제는 처음으로 케이스 개수를 입력받고,

각 케이스마다 학생 수와 학생들이 받은 점수들을 입력받는다

그리고 평균값을 내고, 그 평균을 넘기는 학생의 수를 백분위 평균을 내서 출력하는 문제이다.

 

num = int(input())
for i in range(num):
    a = list(map(int, input().split()))
    avg = sum(a[1:])/a[0]
    count = 0
    for score in a[1:]:
        if score > avg:
            count += 1
    print('%.3f' %((count/a[0])*100)+'%')

 

여기에서 중요한 것은 a[1:]/a[0] 부분이다

케이스를 입력받는 구조 상 첫번째 숫자는 학생 수고, 그 이후로는 학생들이 각자 받은 점수들이다

즉, sum(a[1:])은 전체 학생들이 받은 점수를 합하는 거고, 이를 a[0] 즉 학생 수로 나눠서 평균을 내는 것이다

for 문으로 score에 학생들의 점수를 하나씩 대입해 평균을 넘기면 count의 숫자를 하나씩 올리고

이는 곧 전체적인 평균을 내는 데 사용된다