c=int(input())
for i in range(c): #(1)
li=list(map(int,input().split()))
c=0
for j in li[1:]: #(2)
avg=sum(li[1:])/li[0]
if j>avg:
c+=1
rate=c/li[0]*100
print('{0:0.3f}%'.format(rate))
(1)의 반복문은 테스트케이스 개수만큼 반복한다.
이후 li에 학생의 수와 그 수의 점수를 입력받는다.
변수 c는 평균을 넘는 학생의 수를 저장하기 위한 변수이다.
(2)의 반복문은 리스트에서 학생의 수를 제외한 점수 인자(j)에 접근한다.
이후 점수 한줄의 평균을 구하고
j가 평균보다 크면 c에 1을 더해준다.
그리고 c/학생의 수 * 100 으로 평균을 넘는 학생들의 비율을 구한다.
위의
print('{0:0.3f}%'.format(rate))
에서 format함수를 사용했다.
format이란 문자열을 보기 좋게 출력하기 위해 사용한다.
{}안에 출력할 형식을 지정하고, format안에 값을 넣으면 된다.
기본적인 사용법
중괄호와 값을 같이 출력하고 싶을 시에는
와 같이 {인자}를 써주고 중괄호로 두번 감싸면 된다.
문자열을 정렬하고자 할 때에도 사용할 수 있다.
왼쪽정렬은 <
오른쪽정렬은 >
가운데정렬은 ^
{0:<5}은 0번째 인자를 5자리로 표현하고, 왼쪽 정렬을 한다는 의미이다.
자리수와 소수점 표시는 다음과 같이 한다.
정수형은 {인자:0Nd}로 표시한다. 이때 N은 표현할 자릿수를 의미한다.
실수형은 {인자:0.Nf}로 표시한다. N은 마찬가지로 소수점 아래 표시할 자리수를 나타낸다.